diff --git a/.gitmodules b/.gitmodules index 5ece87098e..e58fa5bb99 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "FV3"] path = FV3 - url = https://github.com/NOAA-EMC/fv3atm + url = https://github.com/MicroTed/fv3atm.git branch = develop [submodule "WW3"] path = WW3 diff --git a/CDEPS-interface/CDEPS b/CDEPS-interface/CDEPS index f1ed1b8de6..ad4282a002 160000 --- a/CDEPS-interface/CDEPS +++ b/CDEPS-interface/CDEPS @@ -1 +1 @@ -Subproject commit f1ed1b8de64f466efb24bddb40d4406425b3db07 +Subproject commit ad4282a002c6a13b7017ae00f6ec08b175617972 diff --git a/CICE-interface/CICE b/CICE-interface/CICE index c660075e50..27dfd1b6b0 160000 --- a/CICE-interface/CICE +++ b/CICE-interface/CICE @@ -1 +1 @@ -Subproject commit c660075e50530add27cf920ece06911577612a80 +Subproject commit 27dfd1b6b06a2e95fbb10c78c9a6110669d3eb3f diff --git a/CMEPS-interface/CMEPS b/CMEPS-interface/CMEPS index 763405c02a..df272f1430 160000 --- a/CMEPS-interface/CMEPS +++ b/CMEPS-interface/CMEPS @@ -1 +1 @@ -Subproject commit 763405c02a8f7eec8c1e1a360fcb5bf3570604e1 +Subproject commit df272f1430c05236843b983b1b0cf760c29d5397 diff --git a/FV3 b/FV3 index 5301b65ec0..39283998c0 160000 --- a/FV3 +++ b/FV3 @@ -1 +1 @@ -Subproject commit 5301b65ec07ac93ababaf6e7bf8a44fe403bd04c +Subproject commit 39283998c04e9972e353a24bb6a8d9df8230716f diff --git a/tests/opnReqTests/dbg.sh b/tests/opnReqTests/dbg.sh index d5f31b3c58..713fb75829 100644 --- a/tests/opnReqTests/dbg.sh +++ b/tests/opnReqTests/dbg.sh @@ -15,8 +15,18 @@ if [[ $application == 'global' ]]; then LIST_FILES="sfcf0$FHMAX_2D.nc sfcf0$FHMAX_2D.nc" fi elif [[ $application == 'regional' ]]; then - echo "Regional application not yet implemented for debug" - exit 1 + FHMAX=1 + OUTPUT_FH="0 1" + + FHMAX_2D=$(printf "%02d" $FHMAX) + LIST_FILES=$(echo -n $LIST_FILES | sed -E "s/phyf0[0-9][1-9]/phyf0$FHMAX_2D/g" \ + | sed -E "s/dynf0[0-9][1-9]/dynf0$FHMAX_2D/g" \ + | sed -E "s/PRSLEV.GrbF[0-9][0-9]//g" \ + | sed -E "s/NATLEV.GrbF[0-9][0-9]//g" \ + | sed -e "s/^ *//" -e "s/ *$//") + + WLCLK=30 + WRITE_DOPOST=.false. elif [[ $application == 'cpld' ]]; then FHMAX=6 DAYS=0.25 diff --git a/tests/opnReqTests/dcp.sh b/tests/opnReqTests/dcp.sh index 3a3ad9ef75..750bf6e961 100644 --- a/tests/opnReqTests/dcp.sh +++ b/tests/opnReqTests/dcp.sh @@ -18,9 +18,14 @@ elif [[ $application == 'regional' ]]; then TASKS=$((INPES*JNPES*NTILES + WRITE_GROUP*WRTTASK_PER_GROUP)) NODES=$(((TASKS+TPN-1)/TPN)) else - INPES=5 - JNPES=12 - NTILES=1 + if [[ $TEST_NAME == 'regional_control' ]]; then + INPES=5 + JNPES=12 + elif [[ $TEST_NAME =~ 'regional_3km' ]]; then + temp=$INPES + INPES=$JNPES + JNPES=$temp + fi fi elif [[ $application == 'cpld' ]]; then if [[ $CI_TEST == 'true' ]]; then diff --git a/tests/opnReqTests/std.sh b/tests/opnReqTests/std.sh index af085af266..1792cef491 100644 --- a/tests/opnReqTests/std.sh +++ b/tests/opnReqTests/std.sh @@ -18,6 +18,8 @@ elif [[ $application == 'regional' ]]; then WRTTASK_PER_GROUP=8 TASKS=$((INPES*JNPES*NTILES + WRITE_GROUP*WRTTASK_PER_GROUP)) fi + RESTART_N=$(( FHMAX/2 )) + RESTART_INTERVAL="${RESTART_N} -1" elif [[ $application == 'cpld' ]]; then if [ $CI_TEST == 'true' ]; then INPES=2 diff --git a/tests/opnReqTests/wrt_env.sh b/tests/opnReqTests/wrt_env.sh index af9801cc3f..140141f5d5 100644 --- a/tests/opnReqTests/wrt_env.sh +++ b/tests/opnReqTests/wrt_env.sh @@ -14,6 +14,7 @@ export ICE_tasks=${ICE_tasks:-} export WAV_tasks=${WAV_tasks:-} export WRITE_GROUP=${WRITE_GROUP} export WRTTASK_PER_GROUP=${WRTTASK_PER_GROUP} +export WRITE_DOPOST=${WRITE_DOPOST:-} export NPROC_ICE=${NPROC_ICE:-} export THRD=${THRD} export TASKS=${TASKS} diff --git a/tests/parm/regional_3km_WoFS.nml.IN b/tests/parm/regional_3km_WoFS.nml.IN new file mode 100644 index 0000000000..d0d0dba611 --- /dev/null +++ b/tests/parm/regional_3km_WoFS.nml.IN @@ -0,0 +1,263 @@ +&atmos_model_nml + avg_max_length = 3600.0 + blocksize = 32 + ccpp_suite = '@[CCPP_SUITE]' + chksum_debug = .false. + dycore_only = .false. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = 65 + nt_checker = 0 +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 3000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + bc_update_interval = 3 + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 1.0 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = @[DNATS] + do_sat_adj = @[DO_SAT_ADJ] + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2 + external_eta = .true. + external_ic = .true. + fill = .true. + full_zs_filter = .false. + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 10 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = 2 + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = @[INPES],@[JNPES] + make_nh = .true. + mountain = .false. + n_split = 5 + n_sponge = 9 + n_zs_filter = 0 + na_init = 1 + ncep_ic = .false. + nggps_ic = .true. + no_dycore = .false. + nord = 3 + npx = 321 + npy = 193 + npz = 64 + npz_type = '' + nrows_blend = 10 + ntiles = 1 + nudge_qv = .false. + nwat = @[NWAT] + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .true. + read_increment = .false. + regional = .true. + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + stretch_fac = 0.999 + target_lat = 38.0 + target_lon = -120.0 + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = .false. + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 0.25 + cnvcld = .false. + cnvgwd = .false. + cplflx = .false. + debug = .false. + do_deep = @[DO_DEEP] + do_mynnedmf = @[DO_MYNNEDMF] + do_mynnsfclay = @[DO_MYNNSFCLAY] + do_shum = .false. + do_skeb = .false. + do_spp = .false. + do_sppt = .false. + dspheat = .true. + effr_in = .true. + fhcyc = 0.0 + fhlwr = 1200.0 + fhswr = 1200.0 + fhzero = 1.0 + h2o_phys = @[H2O_PHYS] + hybedmf = @[HYBEDMF] + iaer = 111 + ialb = @[IALB] + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + icloud_bl = 1 + ico2 = 2 + iems = @[IEMS] + imfdeepcnv = @[IMFDEEPCNV] + imfshalcnv = @[IMFSHALCNV] + imp_physics = @[IMP_PHYSICS] + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + ldiag3d = .false. + lheatstrg = .false. + lndp_each_step = .true. + lndp_type = 0 + lradar = .true. + lsm = @[LSM] + lsoil = 4 + lsoil_lsm = @[LSOIL_LSM] + ltaerosol = @[LTAEROSOL] + lwhtr = .true. + n_var_lndp = 0 + n_var_spp = 0 + nsradar_reset = 3600 + nssl_cccn = @[NSSL_CCCN] + nssl_ccn_on = @[NSSL_CCN_ON] + nssl_hail_on = @[NSSL_HAIL_ON] + nst_anl = .true. + nstf_name = @[NSTF_NAME] + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + pre_rad = .false. + print_diff_pgr = .true. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + satmedmf = .false. + shal_cnv = @[SHAL_CNV] + swhtr = .true. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnabsc = 'C3337.maximum_snow_albedo.tileX.nc' + fnacna = '' + fnaisc = 'CFSR.SEAICE.1982.2012.monthly.clim.grb' + fnalbc = 'C3337.snowfree_albedo.tileX.nc' + fnalbc2 = 'C3337.facsf.tileX.nc' + fnglac = 'global_glacier.2x2.grb' + fnmskh = 'seaice_newland.grb' + fnmxic = 'global_maxice.2x2.grb' + fnslpc = 'C3337.slope_type.tileX.nc' + fnsmcc = 'global_soilmgldas.t126.384.190.grb' + fnsnoa = '' + fnsnoc = 'global_snoclim.1.875.grb' + fnsotc = 'C3337.soil_type.tileX.nc' + fntg3c = 'C3337.substrate_temperature.tileX.nc' + fntsfa = '' + fntsfc = 'RTGSST.1982.2012.monthly.clim.grb' + fnvegc = 'C3337.vegetation_greenness.tileX.nc' + fnvetc = 'C3337.vegetation_type.tileX.nc' + fnvmnc = 'C3337.vegetation_greenness.tileX.nc' + fnvmxc = 'C3337.vegetation_greenness.tileX.nc' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ diff --git a/tests/rt.conf b/tests/rt.conf index bfbd05b0af..8a8cf8b61e 100644 --- a/tests/rt.conf +++ b/tests/rt.conf @@ -28,7 +28,7 @@ RUN | cpld_debug_p8 # PROD tests # ################################################################################################################################################################################### -COMPILE | -DAPP=ATM -DCCPP_SUITES=FV3_GFS_v16,FV3_GFS_v15_thompson_mynn,FV3_GFS_v17_p8,FV3_GFS_v17_p8_rrtmgp,FV3_GFS_v15_thompson_mynn_lam3km -D32BIT=ON | | fv3 | +COMPILE | -DAPP=ATM -DCCPP_SUITES=FV3_GFS_v16,FV3_GFS_v15_thompson_mynn,FV3_GFS_v17_p8,FV3_GFS_v17_p8_rrtmgp,FV3_GFS_v15_thompson_mynn_lam3km,FV3_WoFS_v0 -D32BIT=ON | | fv3 | RUN | control | | fv3 | RUN | control_decomp | | | RUN | control_2dwrtdecomp | | | @@ -64,6 +64,7 @@ RUN | regional_noquilt RUN | regional_2threads | - wcoss_cray jet.intel | | RUN | regional_netcdf_parallel | - wcoss2 | fv3 | RUN | regional_3km | | fv3 | +RUN | regional_3km_wofs | | fv3 | COMPILE | -DAPP=ATM -DCCPP_SUITES=FV3_RAP,FV3_RAP_RRTMGP,FV3_RAP_sfcdiff,FV3_HRRR,FV3_RRFS_v1beta,FV3_RRFS_v1nssl -D32BIT=ON | | fv3 | diff --git a/tests/tests/regional_3km_wofs b/tests/tests/regional_3km_wofs new file mode 100644 index 0000000000..332e40d0e8 --- /dev/null +++ b/tests/tests/regional_3km_wofs @@ -0,0 +1,60 @@ +############################################################################### +# +# FV3_WoFS_v0 test atmosphere only with hi-res 3km +# +############################################################################### + +export TEST_DESCR="Compare FV3_WoFS_v0 results with previous trunk version" + +export CNTL_DIR=atm_wofsv0_3km + +export LIST_FILES="dynf000.nc \ + dynf003.nc \ + dynf006.nc \ + phyf000.nc \ + phyf003.nc \ + phyf006.nc" + +export_fv3 + +export OZ_PHYS_OLD=.false. +export OZ_PHYS_NEW=.true. +export H2O_PHYS=.true. +export RESTART_INTERVAL="0" +export WRITE_DOPOST=.false. +export POSTAPP='lam' + +export FV3_RUN=regional_3km_run.IN +export CCPP_SUITE=FV3_WoFS_v0 +export INPUT_NML=regional_3km_WoFS.nml.IN +export MODEL_CONFIGURE=model_configure_regional_3km.IN +export FIELD_TABLE=field_table_nssl_tke +export DIAG_TABLE=diag_table_lam + +export WLCLK=15 +export FHMAX=6 +export TASKS=120 +export INPES=10 +export JNPES=11 +export OUTPUT_FH="3 -1" + +export IMP_PHYSICS=17 +export DNATS=0 +export NWAT=7 +export NSSL_CCN_ON=.true. +export NSSL_HAIL_ON=.true. +export NSSL_INVERTCCN=.true. +export DO_SAT_ADJ=.false. +export LTAEROSOL=.true. +export IALB=1 +export IEMS=1 +export HYBEDMF=.false. +export DO_MYNNEDMF=.true. +export DO_MYNNSFCLAY=.true. +export DO_DEEP=.false. +export SHAL_CNV=.false. +export IMFSHALCNV=-1 +export IMFDEEPCNV=-1 +export LSM=1 +export LSOIL_LSM=4 +export NSTF_NAME="2, 1, 0, 0, 0"