From 98d3104bfa867fcc31ad8562d1f35a5e6e981a6e Mon Sep 17 00:00:00 2001 From: "Man.Zhang" Date: Sat, 11 Apr 2020 21:23:05 -0600 Subject: [PATCH 1/3] Initialize EMC flake model from Yihua Wu --- parm/ccpp_v16beta_flake_c96.nml.IN | 338 +++++++++++++++++++++++ tests/fv3_conf/ccpp_gfs_v16_flake_run.IN | 27 ++ tests/tests/fv3_ccpp_gfs_v16beta_flake | 85 ++++++ 3 files changed, 450 insertions(+) create mode 100644 parm/ccpp_v16beta_flake_c96.nml.IN create mode 100644 tests/fv3_conf/ccpp_gfs_v16_flake_run.IN create mode 100644 tests/tests/fv3_ccpp_gfs_v16beta_flake diff --git a/parm/ccpp_v16beta_flake_c96.nml.IN b/parm/ccpp_v16beta_flake_c96.nml.IN new file mode 100644 index 0000000000..db6af718c4 --- /dev/null +++ b/parm/ccpp_v16beta_flake_c96.nml.IN @@ -0,0 +1,338 @@ +&amip_interp_nml + interp_oi_sst = .true. + use_ncep_sst = .true. + use_ncep_ice = .false. + no_anom_sst = .false. + data_set = 'reynolds_oi' + date_out_of_range = 'climo' +/ + +&atmos_model_nml + blocksize = 32 + chksum_debug = .false. + dycore_only = .false. + fdiag = 1 + fhmax = 384 + fhout = 3 + fhmaxhf = 120 + fhouthf = 1 + ccpp_suite = 'FV3_GFS_v16beta' +/ + +&diag_manager_nml + prepend_date = .false. +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&mpp_io_nml +shuffle=1 +deflate_level=1 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 3000000 + print_memory_usage = .false. +/ + +&fv_core_nml + layout = 3,8 + io_layout = 1,1 + npx = 97 + npy = 97 + ntiles = 6 + npz = 64 + grid_type = -1 + make_nh = .false. + fv_debug = .false. + range_warn = .false. + reset_eta = .false. + n_sponge = 10 + nudge_qv = .true. + nudge_dz = .false. + tau = 10. + rf_cutoff = 7.5e2 + d2_bg_k1 = 0.20 + d2_bg_k2 = 0.0 + kord_tm = -9 + kord_mt = 9 + kord_wz = 9 + kord_tr = 9 + hydrostatic = .false. + phys_hydrostatic = .false. + use_hydro_pressure = .false. + beta = 0. + a_imp = 1. + p_fac = 0.1 + k_split = 2 + n_split = 6 + nwat = 6 + na_init = 0 + d_ext = 0. + dnats = 1 + fv_sg_adj = 450 + d2_bg = 0. + nord = 2 + dddmp = 0.1 + d4_bg = 0.12 + vtdm4 = 0.02 + delt_max = 0.002 + ke_bg = 0. + do_vort_damp = .true. + external_ic = .true. + external_eta = .true. + gfs_phil = .false. + nggps_ic = .true. + mountain = .false. + ncep_ic = .false. + d_con = 1. + hord_mt = 5 + hord_vt = 5 + hord_tm = 5 + hord_dp = -5 + hord_tr = 8 + adjust_dry_mass = .false. + consv_te = 1. + do_sat_adj = .true. + consv_am = .false. + fill = .true. + dwind_2d = .false. + print_freq = 6 + warm_start = .false. + no_dycore = .false. + z_tracer = .true. + agrid_vel_rst = .true. + read_increment = .false. + res_latlon_dynamics = "" +/ + +&external_ic_nml + filtered_terrain = .true. + levp = 65 + gfs_dwinds = .true. + checker_tr = .false. + nt_checker = 0 +/ + +&gfs_physics_nml + fhzero = 6 + h2o_phys = .true. + ldiag3d = .false. + fhcyc = 24 + use_ufo = .true. + pre_rad = .false. + ncld = 5 + imp_physics = 11 + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + iaer = 5111 + icliq_sw = 2 + iovr_lw = 3 + iovr_sw = 3 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .true. + cal_pre = .false. + redrag = .true. + dspheat = .true. + hybedmf = .false. + satmedmf = .true. + isatmedmf = 1 + lheatstrg = .true. + random_clds = .false. + trans_trac = .true. + cnvcld = .true. + imfshalcnv = 2 + imfdeepcnv = 2 + cdmbgwd = 4.0,0.15,1.0,1.0 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + lsoil = 4 + lsm = 1 + iopt_dveg = 1 + iopt_crs = 1 + iopt_btr = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 1 + iopt_alb = 2 + iopt_snf = 4 + iopt_tbot = 2 + iopt_stc = 1 + debug = .false. + oz_phys = .F. + oz_phys_2015 = .T. + nstf_name = 2,1,0,0,0 + nst_anl = .true. + psautco = 0.0008,0.0005 + prautco = 0.00015,0.00015 + lgfdlmprad = .true. + effr_in = .true. + ldiag_ugwp = .false. + do_ugwp = .false. + do_tofd = .true. + do_sppt = .true. + do_shum = .true. + do_skeb = .true. + do_sfcperts = .false. +/ + +&gfdl_cloud_microphysics_nml + sedi_transport = .true. + do_sedi_heat = .false. + rad_snow = .true. + rad_graupel = .true. + rad_rain = .true. + const_vi = .F. + const_vs = .F. + const_vg = .F. + const_vr = .F. + vi_max = 1. + vs_max = 2. + vg_max = 12. + vr_max = 12. + qi_lim = 1. + prog_ccn = .false. + do_qa = .true. + fast_sat_adj = .true. + tau_l2v = 225. + tau_v2l = 150. + tau_g2v = 900. + rthresh = 10.e-6 ! This is a key parameter for cloud water + dw_land = 0.16 + dw_ocean = 0.10 + ql_gen = 1.0e-3 + ql_mlt = 1.0e-3 + qi0_crt = 8.0E-5 + qs0_crt = 1.0e-3 + tau_i2s = 1000. + c_psaci = 0.05 + c_pgacs = 0.01 + rh_inc = 0.30 + rh_inr = 0.30 + rh_ins = 0.30 + ccn_l = 300. + ccn_o = 100. + c_paut = 0.5 + c_cracw = 0.8 + use_ppm = .false. + use_ccn = .true. + mono_prof = .true. + z_slope_liq = .true. + z_slope_ice = .true. + de_ice = .false. + fix_negative = .true. + icloud_f = 1 + mp_time = 150. + reiflag = 2 +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&namsfc + FNGLAC = 'global_glacier.2x2.grb' + FNMXIC = 'global_maxice.2x2.grb' + FNTSFC = 'RTGSST.1982.2012.monthly.clim.grb' + FNSNOC = 'global_snoclim.1.875.grb' + FNZORC = 'igbp' + FNALBC = 'global_snowfree_albedo.bosu.t126.384.190.rg.grb' + FNALBC2 = 'global_albedo4.1x1.grb' + FNAISC = 'CFSR.SEAICE.1982.2012.monthly.clim.grb' + FNTG3C = 'global_tg3clim.2.6x1.5.grb' + FNVEGC = 'global_vegfrac.0.144.decpercent.grb' + FNVETC = 'global_vegtype.igbp.t126.384.190.rg.grb' + FNSOTC = 'global_soiltype.statsgo.t126.384.190.rg.grb' + FNSMCC = 'global_soilmgldas.t126.384.190.grb' + FNMSKH = 'seaice_newland.grb' + FNTSFA = '' + FNACNA = '' + FNSNOA = '' + FNVMNC = 'global_shdmin.0.144x0.144.grb' + FNVMXC = 'global_shdmax.0.144x0.144.grb' + FNSLPC = 'global_slope.1x1.grb' + FNABSC = 'global_mxsnoalb.uariz.t126.384.190.rg.grb' + LDEBUG = .false. + FSMCL(2) = 99999 + FSMCL(3) = 99999 + FSMCL(4) = 99999 + LANDICE = .true. + FTSFS = 90 + FAISL = 99999 + FAISS = 99999 + FSNOL = 99999 + FSNOS = 99999 + FSICL = 99999 + FSICS = 99999 + FTSFL = 99999 + FVETL = 99999 + FSOTL = 99999 + FvmnL = 99999 + FvmxL = 99999 + FSLPL = 99999 + FABSL = 99999 +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&nam_stochy + ntrunc = 766 + lon_s = 1536 + lat_s = 768 + skeb = 0.3 + iseed_skeb = 2019102712451 + iseed_shum = 2019102712452 + iseed_sppt = 2019102712453 + skeb_tau = 21600. + skeb_lscale = 500000. + skebnorm = 0 + skeb_npass = 30 + skeb_vdof = 5 + shum = 0.005 + shum_tau = 21600. + shum_lscale = 500000. + sppt = 0.5 + sppt_tau = 21600. + sppt_lscale = 500000. + sppt_logit = .true. + sppt_sfclimit = .true. + use_zmtnblck = .true. +/ + +&nam_sfcperts +/ + +&cires_ugwp_nml + knob_ugwp_solver = 2 + knob_ugwp_source = 1,1,0,0 + knob_ugwp_wvspec = 1,25,25,25 + knob_ugwp_azdir = 2,4,4,4 + knob_ugwp_stoch = 0,0,0,0 + knob_ugwp_effac = 1,1,1,1 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_version = 0 + launch_level = 27 +/ + diff --git a/tests/fv3_conf/ccpp_gfs_v16_flake_run.IN b/tests/fv3_conf/ccpp_gfs_v16_flake_run.IN new file mode 100644 index 0000000000..3295cd354c --- /dev/null +++ b/tests/fv3_conf/ccpp_gfs_v16_flake_run.IN @@ -0,0 +1,27 @@ +rm -fr INPUT RESTART +if [ $WARM_START = .F. ]; then + cp -r @[RTPWD]/FV3_input_data/INPUT . + mkdir RESTART +else + mkdir INPUT RESTART + cp -r @[RTPWD]/FV3_input_data/RESTART/* ./INPUT +fi +cp @[RTPWD]/FV3_input_data/INPUT/aerosol.dat . +cp @[RTPWD]/FV3_input_data/INPUT/co2historicaldata_201*.txt . +cp @[RTPWD]/FV3_input_data/INPUT/sfc_emissivity_idx.txt . +cp @[RTPWD]/FV3_input_data/INPUT/solarconstant_noaa_an.txt . +cp @[RTPWD]/FV3_input_data/ozprdlos_2015_new_sbuvO3_tclm15_nuchem.f77 ./global_o3prdlos.f77 +cp @[RTPWD]/FV3_input_data/global_h2o_pltc.f77 ./global_h2oprdlos.f77 +cp @[RTPWD]/FV3_input_data/*grb . +cp @[RTPWD]/FV3_input_data/*_table . +cp @[RTPWD]/FV3_input_data/diag_table_gfdlmp diag_table +cp @[RTPWD]/FV3_input_data_gsd/field_table_suite2 field_table +cp @[RTPWD]/FV3_input_data/*configure . + +cp ${PATHRT}/../FV3/ccpp/suites/suite_${CCPP_SUITE}.xml suite_${CCPP_SUITE}.xml + +# Add path to libccpp.so and libccpphys.so to LD_LIBRARY_PATH, append to module-setup.sh +echo " " >> module-setup.sh +echo "# Add path to libccpp.so and libccpphys.so to LD_LIBRARY_PATH" +echo "export LD_LIBRARY_PATH=${PATHRT}/../FV3/${CCPP_LIB_DIR}:${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" >> module-setup.sh +echo " " >> module-setup.sh diff --git a/tests/tests/fv3_ccpp_gfs_v16beta_flake b/tests/tests/fv3_ccpp_gfs_v16beta_flake new file mode 100644 index 0000000000..63de5fa5cd --- /dev/null +++ b/tests/tests/fv3_ccpp_gfs_v16beta_flake @@ -0,0 +1,85 @@ +############################################################################### +# +# FV3 CCPP GFS v16beta compiled with 32-bit dynamics test +# +############################################################################### + +export TEST_DESCR="Compare FV3 32bit CCPP GFS v16beta flake results with previous trunk version" + +export CNTL_DIR=fv3_gfs_v16beta_flake + +export LIST_FILES="atmos_4xdaily.tile1.nc \ + atmos_4xdaily.tile2.nc \ + atmos_4xdaily.tile3.nc \ + atmos_4xdaily.tile4.nc \ + atmos_4xdaily.tile5.nc \ + atmos_4xdaily.tile6.nc \ + phyf000.tile1.nc \ + phyf000.tile2.nc \ + phyf000.tile3.nc \ + phyf000.tile4.nc \ + phyf000.tile5.nc \ + phyf000.tile6.nc \ + phyf024.tile1.nc \ + phyf024.tile2.nc \ + phyf024.tile3.nc \ + phyf024.tile4.nc \ + phyf024.tile5.nc \ + phyf024.tile6.nc \ + dynf000.tile1.nc \ + dynf000.tile2.nc \ + dynf000.tile3.nc \ + dynf000.tile4.nc \ + dynf000.tile5.nc \ + dynf000.tile6.nc \ + dynf024.tile1.nc \ + dynf024.tile2.nc \ + dynf024.tile3.nc \ + dynf024.tile4.nc \ + dynf024.tile5.nc \ + dynf024.tile6.nc \ + RESTART/coupler.res \ + RESTART/fv_core.res.nc \ + RESTART/fv_core.res.tile1.nc \ + RESTART/fv_core.res.tile2.nc \ + RESTART/fv_core.res.tile3.nc \ + RESTART/fv_core.res.tile4.nc \ + RESTART/fv_core.res.tile5.nc \ + RESTART/fv_core.res.tile6.nc \ + RESTART/fv_srf_wnd.res.tile1.nc \ + RESTART/fv_srf_wnd.res.tile2.nc \ + RESTART/fv_srf_wnd.res.tile3.nc \ + RESTART/fv_srf_wnd.res.tile4.nc \ + RESTART/fv_srf_wnd.res.tile5.nc \ + RESTART/fv_srf_wnd.res.tile6.nc \ + RESTART/fv_tracer.res.tile1.nc \ + RESTART/fv_tracer.res.tile2.nc \ + RESTART/fv_tracer.res.tile3.nc \ + RESTART/fv_tracer.res.tile4.nc \ + RESTART/fv_tracer.res.tile5.nc \ + RESTART/fv_tracer.res.tile6.nc \ + RESTART/sfc_data.tile1.nc \ + RESTART/sfc_data.tile2.nc \ + RESTART/sfc_data.tile3.nc \ + RESTART/sfc_data.tile4.nc \ + RESTART/sfc_data.tile5.nc \ + RESTART/sfc_data.tile6.nc \ + RESTART/phy_data.tile1.nc \ + RESTART/phy_data.tile2.nc \ + RESTART/phy_data.tile3.nc \ + RESTART/phy_data.tile4.nc \ + RESTART/phy_data.tile5.nc \ + RESTART/phy_data.tile6.nc" + + +export_fv3 +export NODES=$(expr $TASKS / $TPN + 1) + +DT_ATMOS="1200" + +export FV3_RUN=ccpp_gfs_v16_flake_run.IN +export CCPP_SUITE=FV3_GFS_v16beta_flake +export CCPP_LIB_DIR=ccpp/lib +export INPUT_NML=ccpp_v16beta_flake_c96.nml.IN + +RUN_SCRIPT=rt_fv3.sh From 86047aa2f27d178fd28e7ce193f6b558b9396041 Mon Sep 17 00:00:00 2001 From: "Man.Zhang" Date: Sun, 12 Apr 2020 15:41:42 -0600 Subject: [PATCH 2/3] update submodule --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 4843d9ff5e..aaa547f4d9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,7 @@ [submodule "FV3"] path = FV3 - url = https://github.com/NCAR/fv3atm - branch = dtc/develop + url = https://github.com/mzhangw/fv3atm + branch = emc_flake [submodule "NEMS"] path = NEMS url = https://github.com/NOAA-EMC/NEMS From 87cb72ff17189230bc79840d6b31d69be2d499b7 Mon Sep 17 00:00:00 2001 From: "Man.Zhang" Date: Wed, 6 May 2020 08:14:59 -0600 Subject: [PATCH 3/3] fix the SDF name in NML --- parm/ccpp_v16beta_flake_c96.nml.IN | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/ccpp_v16beta_flake_c96.nml.IN b/parm/ccpp_v16beta_flake_c96.nml.IN index db6af718c4..cbe1239661 100644 --- a/parm/ccpp_v16beta_flake_c96.nml.IN +++ b/parm/ccpp_v16beta_flake_c96.nml.IN @@ -16,7 +16,7 @@ fhout = 3 fhmaxhf = 120 fhouthf = 1 - ccpp_suite = 'FV3_GFS_v16beta' + ccpp_suite = 'FV3_GFS_v16beta_flake' / &diag_manager_nml