From 0859bfd8906475a68eba6703ba6029527eed1891 Mon Sep 17 00:00:00 2001 From: "Grant.Firl" Date: Mon, 31 Dec 2018 16:00:14 -0700 Subject: [PATCH 1/5] update ccpp_prebuild_config.py to reflect latest changes to GFDL MP scheme; create 5 suites (control, control + GFDL MP, CPT advanced, csawmgshoc, GSD) for both active surface fluxes and prescribed surface fluxes; update case configuration files to point to new input namelists and for their names to reflect the suite being called; move case input namelists to /scm/etc/case_config/input_namelists; add scm/src/CCPP_typedefs.F90 to reflect latest changes to GFDL MP (not used in SCM since changes have to do with 32-bit running of fast GFDL MP, but kept for compiling purposes); modified GFS_typedefs.F90 and gmtb_scm_type_defs.f90 to work with latest commits of ccpp-physics --- ccpp/config/ccpp_prebuild_config.py | 2 + ccpp/physics | 2 +- ccpp/suites/suite_SCM_CPT_advanced.xml | 19 +- ...te_SCM_CPT_advanced_prescribed_surface.xml | 73 +++++ ccpp/suites/suite_SCM_GFS_2017_updated.xml | 2 +- ...suite_SCM_GFS_2017_updated_csawmgshoc.xml} | 15 +- ..._updated_csawmgshoc_prescribed_surface.xml | 72 +++++ ... => suite_SCM_GFS_2017_updated_gfdlmp.xml} | 4 +- ...017_updated_gfdlmp_prescribed_surface.xml} | 2 +- ccpp/suites/suite_SCM_GSD.xml | 81 +++++ .../suite_SCM_GSD_prescribed_surface.xml | 66 ++++ ....nml => LASSO_2016051812_MSDA_control.nml} | 6 +- ....nml => LASSO_2016051812_VARA_control.nml} | 6 +- ...51812.nml => LASSO_2016051812_control.nml} | 6 +- ....nml => arm_sgp_summer_1997_A_control.nml} | 4 +- ...97_A.nml => arm_sgp_summer_1997_A_cpt.nml} | 6 +- .../arm_sgp_summer_1997_A_csawmgshoc.nml | 32 ++ .../arm_sgp_summer_1997_A_gfdlmp.nml | 32 ++ ....nml => arm_sgp_summer_1997_B_control.nml} | 6 +- ....nml => arm_sgp_summer_1997_C_control.nml} | 6 +- ....nml => arm_sgp_summer_1997_R_control.nml} | 6 +- ....nml => arm_sgp_summer_1997_S_control.nml} | 6 +- ....nml => arm_sgp_summer_1997_T_control.nml} | 6 +- ....nml => arm_sgp_summer_1997_U_control.nml} | 6 +- ....nml => arm_sgp_summer_1997_X_control.nml} | 6 +- .../{astex.nml => astex_control.nml} | 6 +- .../{bomex.nml => bomex_control.nml} | 6 +- scm/etc/case_config/default.nml | 6 +- scm/etc/case_config/input.nml | 277 ---------------- scm/etc/case_config/input_2017_GFS.nml | 218 ------------- scm/etc/case_config/input_CPT_adv.nml | 288 ----------------- scm/etc/case_config/input_MG.nml | 302 ------------------ .../input_namelists/input_fv3_control.nml | 50 +++ .../input_namelists/input_fv3_cpt.nml | 78 +++++ .../input_namelists/input_fv3_csawmgshoc.nml | 79 +++++ .../input_namelists/input_fv3_gfdlmp.nml | 97 ++++++ .../input_namelists/input_fv3_gsd.nml | 62 ++++ ...twpice_2017_GFS.nml => twpice_control.nml} | 4 +- .../{twpice_MG.nml => twpice_cpt.nml} | 6 +- scm/etc/case_config/twpice_csawmgshoc.nml | 31 ++ .../{twpice.nml => twpice_gfdlmp.nml} | 6 +- .../{twpice_CPT_adv.nml => twpice_gsd.nml} | 6 +- scm/src/CCPP_typedefs.F90 | 281 ++++++++++++++++ scm/src/GFS_typedefs.F90 | 8 +- scm/src/gmtb_scm_type_defs.f90 | 12 +- 45 files changed, 1129 insertions(+), 1166 deletions(-) create mode 100644 ccpp/suites/suite_SCM_CPT_advanced_prescribed_surface.xml rename ccpp/suites/{suite_SCM_GFS_2018_MG.xml => suite_SCM_GFS_2017_updated_csawmgshoc.xml} (90%) create mode 100644 ccpp/suites/suite_SCM_GFS_2017_updated_csawmgshoc_prescribed_surface.xml rename ccpp/suites/{suite_SCM_GFS_2018_updated.xml => suite_SCM_GFS_2017_updated_gfdlmp.xml} (97%) rename ccpp/suites/{suite_SCM_GFS_2018_updated_prescribed_surface.xml => suite_SCM_GFS_2017_updated_gfdlmp_prescribed_surface.xml} (96%) create mode 100644 ccpp/suites/suite_SCM_GSD.xml create mode 100644 ccpp/suites/suite_SCM_GSD_prescribed_surface.xml rename scm/etc/case_config/{LASSO_2016051812_MSDA.nml => LASSO_2016051812_MSDA_control.nml} (75%) rename scm/etc/case_config/{LASSO_2016051812_VARA.nml => LASSO_2016051812_VARA_control.nml} (75%) rename scm/etc/case_config/{LASSO_2016051812.nml => LASSO_2016051812_control.nml} (76%) rename scm/etc/case_config/{arm_sgp_summer_1997_A_2017_GFS.nml => arm_sgp_summer_1997_A_control.nml} (83%) rename scm/etc/case_config/{arm_sgp_summer_1997_A.nml => arm_sgp_summer_1997_A_cpt.nml} (76%) create mode 100644 scm/etc/case_config/arm_sgp_summer_1997_A_csawmgshoc.nml create mode 100644 scm/etc/case_config/arm_sgp_summer_1997_A_gfdlmp.nml rename scm/etc/case_config/{arm_sgp_summer_1997_B.nml => arm_sgp_summer_1997_B_control.nml} (75%) rename scm/etc/case_config/{arm_sgp_summer_1997_C.nml => arm_sgp_summer_1997_C_control.nml} (75%) rename scm/etc/case_config/{arm_sgp_summer_1997_R.nml => arm_sgp_summer_1997_R_control.nml} (75%) rename scm/etc/case_config/{arm_sgp_summer_1997_S.nml => arm_sgp_summer_1997_S_control.nml} (75%) rename scm/etc/case_config/{arm_sgp_summer_1997_T.nml => arm_sgp_summer_1997_T_control.nml} (75%) rename scm/etc/case_config/{arm_sgp_summer_1997_U.nml => arm_sgp_summer_1997_U_control.nml} (75%) rename scm/etc/case_config/{arm_sgp_summer_1997_X.nml => arm_sgp_summer_1997_X_control.nml} (75%) rename scm/etc/case_config/{astex.nml => astex_control.nml} (77%) rename scm/etc/case_config/{bomex.nml => bomex_control.nml} (76%) delete mode 100644 scm/etc/case_config/input.nml delete mode 100644 scm/etc/case_config/input_2017_GFS.nml delete mode 100644 scm/etc/case_config/input_CPT_adv.nml delete mode 100644 scm/etc/case_config/input_MG.nml create mode 100644 scm/etc/case_config/input_namelists/input_fv3_control.nml create mode 100644 scm/etc/case_config/input_namelists/input_fv3_cpt.nml create mode 100644 scm/etc/case_config/input_namelists/input_fv3_csawmgshoc.nml create mode 100644 scm/etc/case_config/input_namelists/input_fv3_gfdlmp.nml create mode 100644 scm/etc/case_config/input_namelists/input_fv3_gsd.nml rename scm/etc/case_config/{twpice_2017_GFS.nml => twpice_control.nml} (84%) rename scm/etc/case_config/{twpice_MG.nml => twpice_cpt.nml} (79%) create mode 100644 scm/etc/case_config/twpice_csawmgshoc.nml rename scm/etc/case_config/{twpice.nml => twpice_gfdlmp.nml} (77%) rename scm/etc/case_config/{twpice_CPT_adv.nml => twpice_gsd.nml} (80%) create mode 100644 scm/src/CCPP_typedefs.F90 diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py index a6d2ac91..b72bcc46 100755 --- a/ccpp/config/ccpp_prebuild_config.py +++ b/ccpp/config/ccpp_prebuild_config.py @@ -42,6 +42,7 @@ 'ccpp/physics/physics/micro_mg2_0.F90', 'ccpp/physics/physics/micro_mg3_0.F90', 'ccpp/physics/physics/module_bfmicrophysics.f', + 'ccpp/physics/physics/module_gfdl_cloud_microphys.F90', 'ccpp/physics/physics/module_nst_model.f90', 'ccpp/physics/physics/module_nst_parameters.f90', 'ccpp/physics/physics/module_nst_water_prop.f90', @@ -80,6 +81,7 @@ 'ccpp/physics/physics/module_soil_pre.F90', 'ccpp/physics/physics/wv_saturation.F', 'scm/src/GFS_typedefs.F90', + 'scm/src/CCPP_typedefs.F90' ] # Add all physics scheme files relative to basedir diff --git a/ccpp/physics b/ccpp/physics index 09e637d1..11b29de8 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 09e637d19d2e438543a3a534d42b82955e6b7ca2 +Subproject commit 11b29de82d93560b7091f5fc45c7b3eff80a1ad8 diff --git a/ccpp/suites/suite_SCM_CPT_advanced.xml b/ccpp/suites/suite_SCM_CPT_advanced.xml index e4b23a3c..d886d097 100644 --- a/ccpp/suites/suite_SCM_CPT_advanced.xml +++ b/ccpp/suites/suite_SCM_CPT_advanced.xml @@ -30,8 +30,8 @@ get_prs_fv3 GFS_suite_interstitial_1 dcyc2t3 - GFS_suite_interstitial_2 GFS_surface_generic_pre + GFS_suite_interstitial_2 @@ -51,7 +51,7 @@ sfc_diag_post GFS_surface_generic_post GFS_PBL_generic_pre - moninshoc + hedmf GFS_PBL_generic_post gwdps_pre gwdps @@ -63,21 +63,24 @@ GFS_DCNV_generic_pre get_phi_fv3 GFS_suite_interstitial_3 - shoc - samfdeepcnv + cs_conv_pre + cs_conv + cs_conv_post GFS_DCNV_generic_post gwdc_pre gwdc gwdc_post - + GFS_SCNV_generic_post GFS_suite_interstitial_4 cnvc90 GFS_MP_generic_pre - zhaocarr_gscond - zhaocarr_precpd + m_micro_pre + m_micro + m_micro_post + cs_conv_aw_adj GFS_MP_generic_post sfc_sice_post diff --git a/ccpp/suites/suite_SCM_CPT_advanced_prescribed_surface.xml b/ccpp/suites/suite_SCM_CPT_advanced_prescribed_surface.xml new file mode 100644 index 00000000..4f6461ac --- /dev/null +++ b/ccpp/suites/suite_SCM_CPT_advanced_prescribed_surface.xml @@ -0,0 +1,73 @@ + + + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + dcyc2t3 + GFS_suite_interstitial_2 + GFS_surface_generic_pre + gmtb_scm_sfc_flux_spec + dcyc2t3_post + GFS_PBL_generic_pre + hedmf + GFS_PBL_generic_post + gwdps_pre + gwdps + gwdps_post + rayleigh_damp + GFS_suite_stateout_update + ozphys_2015 + h2ophys + GFS_DCNV_generic_pre + get_phi_fv3 + GFS_suite_interstitial_3 + cs_conv_pre + cs_conv + cs_conv_post + GFS_DCNV_generic_post + gwdc_pre + gwdc + gwdc_post + GFS_SCNV_generic_pre + samfshalcnv + samfshalcnv_post + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + m_micro_pre + m_micro + m_micro_post + cs_conv_aw_adj + GFS_MP_generic_post + sfc_sice_post + + + + diff --git a/ccpp/suites/suite_SCM_GFS_2017_updated.xml b/ccpp/suites/suite_SCM_GFS_2017_updated.xml index 25bf8bca..a13a0471 100644 --- a/ccpp/suites/suite_SCM_GFS_2017_updated.xml +++ b/ccpp/suites/suite_SCM_GFS_2017_updated.xml @@ -30,8 +30,8 @@ get_prs_fv3 GFS_suite_interstitial_1 dcyc2t3 - GFS_suite_interstitial_2 GFS_surface_generic_pre + GFS_suite_interstitial_2 diff --git a/ccpp/suites/suite_SCM_GFS_2018_MG.xml b/ccpp/suites/suite_SCM_GFS_2017_updated_csawmgshoc.xml similarity index 90% rename from ccpp/suites/suite_SCM_GFS_2018_MG.xml rename to ccpp/suites/suite_SCM_GFS_2017_updated_csawmgshoc.xml index ea07937e..a36687ea 100644 --- a/ccpp/suites/suite_SCM_GFS_2018_MG.xml +++ b/ccpp/suites/suite_SCM_GFS_2017_updated_csawmgshoc.xml @@ -1,6 +1,6 @@ - + @@ -30,8 +30,8 @@ get_prs_fv3 GFS_suite_interstitial_1 dcyc2t3 - GFS_suite_interstitial_2 GFS_surface_generic_pre + GFS_suite_interstitial_2 @@ -51,7 +51,7 @@ sfc_diag_post GFS_surface_generic_post GFS_PBL_generic_pre - hedmf + moninshoc GFS_PBL_generic_post gwdps_pre gwdps @@ -59,17 +59,19 @@ rayleigh_damp GFS_suite_stateout_update ozphys_2015 + h2ophys GFS_DCNV_generic_pre get_phi_fv3 GFS_suite_interstitial_3 - samfdeepcnv + shoc + cs_conv_pre + cs_conv + cs_conv_post GFS_DCNV_generic_post gwdc_pre gwdc gwdc_post GFS_SCNV_generic_pre - samfshalcnv - samfshalcnv_post GFS_SCNV_generic_post GFS_suite_interstitial_4 cnvc90 @@ -77,6 +79,7 @@ m_micro_pre m_micro m_micro_post + cs_conv_aw_adj GFS_MP_generic_post sfc_sice_post diff --git a/ccpp/suites/suite_SCM_GFS_2017_updated_csawmgshoc_prescribed_surface.xml b/ccpp/suites/suite_SCM_GFS_2017_updated_csawmgshoc_prescribed_surface.xml new file mode 100644 index 00000000..bcbfe4f5 --- /dev/null +++ b/ccpp/suites/suite_SCM_GFS_2017_updated_csawmgshoc_prescribed_surface.xml @@ -0,0 +1,72 @@ + + + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + dcyc2t3 + GFS_suite_interstitial_2 + GFS_surface_generic_pre + gmtb_scm_sfc_flux_spec + dcyc2t3_post + GFS_PBL_generic_pre + moninshoc + GFS_PBL_generic_post + gwdps_pre + gwdps + gwdps_post + rayleigh_damp + GFS_suite_stateout_update + ozphys_2015 + h2ophys + GFS_DCNV_generic_pre + get_phi_fv3 + GFS_suite_interstitial_3 + shoc + cs_conv_pre + cs_conv + cs_conv_post + GFS_DCNV_generic_post + gwdc_pre + gwdc + gwdc_post + GFS_SCNV_generic_pre + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + m_micro_pre + m_micro + m_micro_post + cs_conv_aw_adj + GFS_MP_generic_post + sfc_sice_post + + + + diff --git a/ccpp/suites/suite_SCM_GFS_2018_updated.xml b/ccpp/suites/suite_SCM_GFS_2017_updated_gfdlmp.xml similarity index 97% rename from ccpp/suites/suite_SCM_GFS_2018_updated.xml rename to ccpp/suites/suite_SCM_GFS_2017_updated_gfdlmp.xml index 9f7aa88b..d84dff79 100644 --- a/ccpp/suites/suite_SCM_GFS_2018_updated.xml +++ b/ccpp/suites/suite_SCM_GFS_2017_updated_gfdlmp.xml @@ -1,6 +1,6 @@ - + @@ -30,8 +30,8 @@ get_prs_fv3 GFS_suite_interstitial_1 dcyc2t3 - GFS_suite_interstitial_2 GFS_surface_generic_pre + GFS_suite_interstitial_2 diff --git a/ccpp/suites/suite_SCM_GFS_2018_updated_prescribed_surface.xml b/ccpp/suites/suite_SCM_GFS_2017_updated_gfdlmp_prescribed_surface.xml similarity index 96% rename from ccpp/suites/suite_SCM_GFS_2018_updated_prescribed_surface.xml rename to ccpp/suites/suite_SCM_GFS_2017_updated_gfdlmp_prescribed_surface.xml index 2711307c..e79bdb92 100644 --- a/ccpp/suites/suite_SCM_GFS_2018_updated_prescribed_surface.xml +++ b/ccpp/suites/suite_SCM_GFS_2017_updated_gfdlmp_prescribed_surface.xml @@ -1,6 +1,6 @@ - + diff --git a/ccpp/suites/suite_SCM_GSD.xml b/ccpp/suites/suite_SCM_GSD.xml new file mode 100644 index 00000000..fc69dd1a --- /dev/null +++ b/ccpp/suites/suite_SCM_GSD.xml @@ -0,0 +1,81 @@ + + + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + dcyc2t3 + GFS_surface_generic_pre + GFS_suite_interstitial_2 + + + + mynnsfc_wrapper + GFS_surface_loop_control_part1 + sfc_nst_pre + sfc_nst + sfc_nst_post + lsm_ruc + GFS_surface_loop_control_part2 + + + + dcyc2t3_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + mynnedmf_wrapper + gwdps_pre + gwdps + gwdps_post + rayleigh_damp + GFS_suite_stateout_update + ozphys + GFS_DCNV_generic_pre + get_phi_fv3 + GFS_suite_interstitial_3 + cu_gf_driver_pre + cu_gf_driver + GFS_DCNV_generic_post + gwdc_pre + gwdc + gwdc_post + GFS_SCNV_generic_pre + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + mp_thompson_hrrr_pre + mp_thompson_hrrr + mp_thompson_hrrr_post + GFS_MP_generic_post + cu_gf_driver_post + + + + diff --git a/ccpp/suites/suite_SCM_GSD_prescribed_surface.xml b/ccpp/suites/suite_SCM_GSD_prescribed_surface.xml new file mode 100644 index 00000000..bcbeae6f --- /dev/null +++ b/ccpp/suites/suite_SCM_GSD_prescribed_surface.xml @@ -0,0 +1,66 @@ + + + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + dcyc2t3 + GFS_suite_interstitial_2 + GFS_surface_generic_pre + gmtb_scm_sfc_flux_spec + dcyc2t3_post + mynnedmf_wrapper + gwdps_pre + gwdps + gwdps_post + rayleigh_damp + GFS_suite_stateout_update + ozphys + GFS_DCNV_generic_pre + get_phi_fv3 + GFS_suite_interstitial_3 + cu_gf_driver_pre + cu_gf_driver + GFS_DCNV_generic_post + gwdc_pre + gwdc + gwdc_post + GFS_SCNV_generic_pre + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + mp_thompson_hrrr_pre + mp_thompson_hrrr + mp_thompson_hrrr_post + GFS_MP_generic_post + cu_gf_driver_post + + + + diff --git a/scm/etc/case_config/LASSO_2016051812_MSDA.nml b/scm/etc/case_config/LASSO_2016051812_MSDA_control.nml similarity index 75% rename from scm/etc/case_config/LASSO_2016051812_MSDA.nml rename to scm/etc/case_config/LASSO_2016051812_MSDA_control.nml index ea77e28d..3e8ef748 100644 --- a/scm/etc/case_config/LASSO_2016051812_MSDA.nml +++ b/scm/etc/case_config/LASSO_2016051812_MSDA_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 54000, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_LASSO_2016051812_MSDA', +output_dir = 'output_LASSO_2016051812_MSDA_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -25,8 +25,8 @@ hour = 12, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated_prescribed_surface', +physics_suite = 'suite_SCM_GFS_2017_updated_prescribed_surface', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/LASSO_2016051812_VARA.nml b/scm/etc/case_config/LASSO_2016051812_VARA_control.nml similarity index 75% rename from scm/etc/case_config/LASSO_2016051812_VARA.nml rename to scm/etc/case_config/LASSO_2016051812_VARA_control.nml index 52220179..73029662 100644 --- a/scm/etc/case_config/LASSO_2016051812_VARA.nml +++ b/scm/etc/case_config/LASSO_2016051812_VARA_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 54000, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_LASSO_2016051812_VARA', +output_dir = 'output_LASSO_2016051812_VARA_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -25,8 +25,8 @@ hour = 12, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated_prescribed_surface', +physics_suite = 'suite_SCM_GFS_2017_updated_prescribed_surface', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/LASSO_2016051812.nml b/scm/etc/case_config/LASSO_2016051812_control.nml similarity index 76% rename from scm/etc/case_config/LASSO_2016051812.nml rename to scm/etc/case_config/LASSO_2016051812_control.nml index 944e3686..32afac26 100644 --- a/scm/etc/case_config/LASSO_2016051812.nml +++ b/scm/etc/case_config/LASSO_2016051812_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 54000, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_LASSO_2016051812', +output_dir = 'output_LASSO_2016051812_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -25,8 +25,8 @@ hour = 12, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated_prescribed_surface', +physics_suite = 'suite_SCM_GFS_2017_updated_prescribed_surface', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_A_2017_GFS.nml b/scm/etc/case_config/arm_sgp_summer_1997_A_control.nml similarity index 83% rename from scm/etc/case_config/arm_sgp_summer_1997_A_2017_GFS.nml rename to scm/etc/case_config/arm_sgp_summer_1997_A_control.nml index f11408ca..8a59ecfa 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_A_2017_GFS.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_A_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 345600, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_arm_sgp_summer_1997_A_2017_GFS', +output_dir = 'output_arm_sgp_summer_1997_A_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -27,6 +27,6 @@ $end $physics_config physics_suite = 'suite_SCM_GFS_2017_updated_prescribed_surface', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input_2017_GFS.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_A.nml b/scm/etc/case_config/arm_sgp_summer_1997_A_cpt.nml similarity index 76% rename from scm/etc/case_config/arm_sgp_summer_1997_A.nml rename to scm/etc/case_config/arm_sgp_summer_1997_A_cpt.nml index 3b420da7..7de74ed9 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_A.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_A_cpt.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 345600, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_arm_sgp_summer_1997_A', +output_dir = 'output_arm_sgp_summer_1997_A_cpt', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -25,8 +25,8 @@ hour = 23, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated_prescribed_surface', +physics_suite = 'suite_SCM_CPT_advanced_prescribed_surface', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_cpt.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_A_csawmgshoc.nml b/scm/etc/case_config/arm_sgp_summer_1997_A_csawmgshoc.nml new file mode 100644 index 00000000..40f7fa2a --- /dev/null +++ b/scm/etc/case_config/arm_sgp_summer_1997_A_csawmgshoc.nml @@ -0,0 +1,32 @@ +$case_config +model_name = 'FV3', +n_columns = 1, +case_name = 'arm_sgp_summer_1997_A', +dt = 600.0, +time_scheme = 1, +runtime = 345600, +output_frequency = 600.0, +n_levels = 64, +output_dir = 'output_arm_sgp_summer_1997_A_csawmgshoc', +output_file = 'output', +case_data_dir = '../data/processed_case_input', +vert_coord_data_dir = '../data/vert_coord_data', +thermo_forcing_type = 1, +mom_forcing_type = 3, +relax_time = 7200.0, +sfc_flux_spec = .true., +sfc_roughness_length_cm = 10.0 +sfc_type = 1, +reference_profile_choice = 2, +year = 1997, +month = 6, +day = 26, +hour = 23, +$end + +$physics_config +physics_suite = 'suite_SCM_GFS_2017_updated_csawmgshoc_prescribed_surface', +physics_suite_dir = '../../ccpp/suites/', +physics_nml = '../etc/case_config/input_namelists/input_fv3_csawmgshoc.nml', +column_area = 2.0E9, +$end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_A_gfdlmp.nml b/scm/etc/case_config/arm_sgp_summer_1997_A_gfdlmp.nml new file mode 100644 index 00000000..9cefa12f --- /dev/null +++ b/scm/etc/case_config/arm_sgp_summer_1997_A_gfdlmp.nml @@ -0,0 +1,32 @@ +$case_config +model_name = 'FV3', +n_columns = 1, +case_name = 'arm_sgp_summer_1997_A', +dt = 600.0, +time_scheme = 1, +runtime = 345600, +output_frequency = 600.0, +n_levels = 64, +output_dir = 'output_arm_sgp_summer_1997_A_gfdlmp', +output_file = 'output', +case_data_dir = '../data/processed_case_input', +vert_coord_data_dir = '../data/vert_coord_data', +thermo_forcing_type = 1, +mom_forcing_type = 3, +relax_time = 7200.0, +sfc_flux_spec = .true., +sfc_roughness_length_cm = 10.0 +sfc_type = 1, +reference_profile_choice = 2, +year = 1997, +month = 6, +day = 26, +hour = 23, +$end + +$physics_config +physics_suite = 'suite_SCM_GFS_2017_updated_gfdlmp_prescribed_surface', +physics_suite_dir = '../../ccpp/suites/', +physics_nml = '../etc/case_config/input_namelists/input_fv3_gfdlmp.nml', +column_area = 2.0E9, +$end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_B.nml b/scm/etc/case_config/arm_sgp_summer_1997_B_control.nml similarity index 75% rename from scm/etc/case_config/arm_sgp_summer_1997_B.nml rename to scm/etc/case_config/arm_sgp_summer_1997_B_control.nml index 333dcc0d..58469735 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_B.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_B_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 432000, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_arm_sgp_summer_1997_B', +output_dir = 'output_arm_sgp_summer_1997_B_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -25,8 +25,8 @@ hour = 23, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated_prescribed_surface', +physics_suite = 'suite_SCM_GFS_2017_updated_prescribed_surface', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_C.nml b/scm/etc/case_config/arm_sgp_summer_1997_C_control.nml similarity index 75% rename from scm/etc/case_config/arm_sgp_summer_1997_C.nml rename to scm/etc/case_config/arm_sgp_summer_1997_C_control.nml index 02885835..17426335 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_C.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_C_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 432000, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_arm_sgp_summer_1997_C', +output_dir = 'output_arm_sgp_summer_1997_C_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -25,8 +25,8 @@ hour = 23, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated_prescribed_surface', +physics_suite = 'suite_SCM_GFS_2017_updated_prescribed_surface', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_R.nml b/scm/etc/case_config/arm_sgp_summer_1997_R_control.nml similarity index 75% rename from scm/etc/case_config/arm_sgp_summer_1997_R.nml rename to scm/etc/case_config/arm_sgp_summer_1997_R_control.nml index a38034b7..32ed223e 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_R.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_R_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 345600, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_arm_sgp_summer_1997_R', +output_dir = 'output_arm_sgp_summer_1997_R_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -25,8 +25,8 @@ hour = 23, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated_prescribed_surface', +physics_suite = 'suite_SCM_GFS_2017_updated_prescribed_surface', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_S.nml b/scm/etc/case_config/arm_sgp_summer_1997_S_control.nml similarity index 75% rename from scm/etc/case_config/arm_sgp_summer_1997_S.nml rename to scm/etc/case_config/arm_sgp_summer_1997_S_control.nml index cf7b2f0d..44cbfe12 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_S.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_S_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 345600, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_arm_sgp_summer_1997_S', +output_dir = 'output_arm_sgp_summer_1997_S_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -25,8 +25,8 @@ hour = 23, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated_prescribed_surface', +physics_suite = 'suite_SCM_GFS_2017_updated_prescribed_surface', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_T.nml b/scm/etc/case_config/arm_sgp_summer_1997_T_control.nml similarity index 75% rename from scm/etc/case_config/arm_sgp_summer_1997_T.nml rename to scm/etc/case_config/arm_sgp_summer_1997_T_control.nml index c6084818..2f022b7d 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_T.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_T_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 259200, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_arm_sgp_summer_1997_T', +output_dir = 'output_arm_sgp_summer_1997_T_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -25,8 +25,8 @@ hour = 23, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated_prescribed_surface', +physics_suite = 'suite_SCM_GFS_2017_updated_prescribed_surface', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_U.nml b/scm/etc/case_config/arm_sgp_summer_1997_U_control.nml similarity index 75% rename from scm/etc/case_config/arm_sgp_summer_1997_U.nml rename to scm/etc/case_config/arm_sgp_summer_1997_U_control.nml index 4b40f650..2f8922e1 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_U.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_U_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 345600, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_arm_sgp_summer_1997_U', +output_dir = 'output_arm_sgp_summer_1997_U_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -25,8 +25,8 @@ hour = 23, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated_prescribed_surface', +physics_suite = 'suite_SCM_GFS_2017_updated_prescribed_surface', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_X.nml b/scm/etc/case_config/arm_sgp_summer_1997_X_control.nml similarity index 75% rename from scm/etc/case_config/arm_sgp_summer_1997_X.nml rename to scm/etc/case_config/arm_sgp_summer_1997_X_control.nml index 737ff44a..7c14258c 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_X.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_X_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 2505600, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_arm_sgp_summer_1997_X', +output_dir = 'output_arm_sgp_summer_1997_X_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -25,8 +25,8 @@ hour = 23, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated_prescribed_surface', +physics_suite = 'suite_SCM_GFS_2017_updated_prescribed_surface', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/astex.nml b/scm/etc/case_config/astex_control.nml similarity index 77% rename from scm/etc/case_config/astex.nml rename to scm/etc/case_config/astex_control.nml index d9cb4cf8..6c78534e 100644 --- a/scm/etc/case_config/astex.nml +++ b/scm/etc/case_config/astex_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 144000, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_astex', +output_dir = 'output_astex_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -24,8 +24,8 @@ hour = 0, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated', +physics_suite = 'suite_SCM_GFS_2017_updated', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 3.7E5, $end diff --git a/scm/etc/case_config/bomex.nml b/scm/etc/case_config/bomex_control.nml similarity index 76% rename from scm/etc/case_config/bomex.nml rename to scm/etc/case_config/bomex_control.nml index 78bd685d..21ca2143 100644 --- a/scm/etc/case_config/bomex.nml +++ b/scm/etc/case_config/bomex_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 21600, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_bomex', +output_dir = 'output_bomex_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -25,8 +25,8 @@ hour = 13, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated_prescribed_surface', +physics_suite = 'suite_SCM_GFS_2017_updated_prescribed_surface', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/default.nml b/scm/etc/case_config/default.nml index d5260781..c26b1cad 100644 --- a/scm/etc/case_config/default.nml +++ b/scm/etc/case_config/default.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 2138400, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_twpice', +output_dir = 'output_twpice_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -24,8 +24,8 @@ hour = 3, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated', +physics_suite = 'suite_SCM_GFS_2017_updated', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/input.nml b/scm/etc/case_config/input.nml deleted file mode 100644 index 6734ebab..00000000 --- a/scm/etc/case_config/input.nml +++ /dev/null @@ -1,277 +0,0 @@ -&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 = @[FDIAG] - ccpp_suite = 'ccpp_suite.xml' -/ - -&diag_manager_nml - prepend_date = .F. -/ - -&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_grid_nml - grid_file = 'INPUT/grid_spec.nc' -/ - -&fv_core_nml - layout = @[INPES],@[JNPES] - io_layout = 1,1 - npx = 97 - npy = 97 - ntiles = 6, - npz = @[NPZ] - grid_type = -1 - make_nh = @[MAKE_NH] - fv_debug = .F. - range_warn = .F. - reset_eta = .F. - n_sponge = 30 - nudge_qv = .T. - rf_fast = .F. - tau = 5. - rf_cutoff = 7.5e2 - d2_bg_k1 = 0.15 - d2_bg_k2 = 0.02 - kord_tm = -9 - kord_mt = 9 - kord_wz = 9 - kord_tr = 9 - hydrostatic = .F. - phys_hydrostatic = .F. - use_hydro_pressure = .F. - beta = 0. - a_imp = 1. - p_fac = 0.1 - k_split = 1 - n_split = 8 - nwat = 6 - na_init = @[NA_INIT] - d_ext = 0.0 - dnats = 1 - fv_sg_adj = 600 - 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 = @[EXTERNAL_IC] - external_eta = .T. - gfs_phil = .false. - nggps_ic = @[NGGPS_IC] - mountain = @[MOUNTAIN] - ncep_ic = .F. - d_con = 1. - hord_mt = 6 - hord_vt = 6 - hord_tm = 6 - hord_dp = -6 - hord_tr = 8 - adjust_dry_mass = .F. - consv_te = 1. - do_sat_adj = .T. - consv_am = .F. - fill = .T. - dwind_2d = .F. - print_freq = 6 - warm_start = @[WARM_START] - read_increment = @[READ_INCREMENT] - res_latlon_dynamics = "fv3_increment.nc" - no_dycore = .false. - z_tracer = .T. -/ - -#&coupler_nml -# months = 0 -# days = 1 -# hours = 0 -# dt_atmos = 1200 -# dt_ocean = 1200 -# current_date = 2016,10,03,00,0,0 -# calendar = 'julian' -# memuse_verbose = .false. -# atmos_nthreads = 1 -# use_hyper_thread = .false. -# ncores_per_node = 24 -#/ - -&external_ic_nml - filtered_terrain = .true. - levp = @[NPZP] - gfs_dwinds = .true. - checker_tr = .F. - nt_checker = 0 -/ - -&gfs_physics_nml - fhzero = 6. - ldiag3d = .true. - fhcyc = 24. - nst_anl = .true. - use_ufo = .true. - pre_rad = .false. - ncld = 5 - imp_physics = 11 - pdfcld = .false. - fhswr = 3600. - fhlwr = 3600. - ialb = 1 - iems = 1 - IAER = 111 - ico2 = 2 - isubc_sw = 2 - isubc_lw = 2 - isol = 2 - lwhtr = .true. - swhtr = .true. - cnvgwd = .true. - shal_cnv = .true. - cal_pre = .true. - redrag = .true. - dspheat = .true. - hybedmf = .true. - satmedmf = .false. - random_clds = .false. - trans_trac = .false. - cnvcld = .true. - imfshalcnv = 2 - imfdeepcnv = 2 - cdmbgwd = 3.5,0.25 - prslrd0 = 0. - ivegsrc = 1 - isot = 1 - debug = .true. - nstf_name = 2,0,1,0,5 - xkzminv = 0.3 - xkzm_m = 1.0 - xkzm_h = 1.0 - do_sppt = .false. - do_shum = .false. - do_skeb = .false. - do_sfcperts = .false. - jcap = 574 -/ - -&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 = 300. - 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. -/ - -&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 - FTSFS = 90 - FAISS = 99999 - FSNOL = 99999 - FSICL = 99999 - FTSFL = 99999, - FAISL = 99999, - FVETL = 99999, - FSOTL = 99999, - FvmnL = 99999, - FvmxL = 99999, - FSLPL = 99999, - FABSL = 99999, - FSNOS = 99999, - FSICS = 99999, -/ -&nam_stochy -/ -&nam_sfcperts -/ diff --git a/scm/etc/case_config/input_2017_GFS.nml b/scm/etc/case_config/input_2017_GFS.nml deleted file mode 100644 index 8f020beb..00000000 --- a/scm/etc/case_config/input_2017_GFS.nml +++ /dev/null @@ -1,218 +0,0 @@ -&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. - ccpp_suite = "suite_GFS_IPD.xml" -/ - -&diag_manager_nml - prepend_date = .F. -/ - -&fms_io_nml - checksum_required = .false. - max_files_r = 100, - max_files_w = 100, -/ - -&fms_nml - clock_grain = 'ROUTINE', - domains_stack_size = 115200, - print_memory_usage = .false. -/ - -&fv_grid_nml - grid_file = 'INPUT/grid_spec.nc' -/ - -&fv_core_nml - layout = @[INPES],@[JNPES] - io_layout = 1,1 - npx = 97 - npy = 97 - ntiles = 6, - npz = 63 - grid_type = -1 - make_nh = @[MAKE_NH] - fv_debug = .F. - range_warn = .F. - reset_eta = .F. - n_sponge = 24 - nudge_qv = .T. - tau = 5. - rf_cutoff = 7.5e2 - d2_bg_k1 = 0.15 - d2_bg_k2 = 0.02 - kord_tm = -9 - kord_mt = 9 - kord_wz = 9 - kord_tr = 9 - hydrostatic = .F. - phys_hydrostatic = .F. - use_hydro_pressure = .F. - beta = 0. - a_imp = 1. - p_fac = 0.1 - k_split = 2 - n_split = 6 - nwat = 2 - na_init = @[NA_INIT] - d_ext = 0.0 - dnats = 0 - 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 = @[EXTERNAL_IC] - gfs_phil = .false. - nggps_ic = @[NGGPS_IC] - mountain = @[MOUNTAIN] - ncep_ic = .F. - d_con = 1. - hord_mt = 6 - hord_vt = 6 - hord_tm = 6 - hord_dp = 6 - hord_tr = 8 - adjust_dry_mass = .F. - consv_te = 1. - consv_am = .F. - fill = .T. - dwind_2d = .F. - print_freq = 6 - warm_start = @[WARM_START] - no_dycore = .false. - z_tracer = .T. -/ - -#&coupler_nml -# months = 0 -# days = 1 -# hours = 0 -# dt_atmos = 225 -# dt_ocean = 225 -# current_date = 2016,10,03,00,0,0 -# calendar = 'julian' -# memuse_verbose = .false. -# atmos_nthreads = 1 -# use_hyper_thread = .false. -# ncores_per_node = 24 -#/ - -&external_ic_nml - filtered_terrain = .true. - ncep_plevels = .true. - levp = 64 - gfs_dwinds = .true. - checker_tr = .F. - nt_checker = 0 -/ - -&gfs_physics_nml - fhzero = 6. - ldiag3d = .true. - fhcyc = 24. - nst_anl = .true. - use_ufo = .true. - pre_rad = .false. - ncld = 1 - imp_physics = 99 - pdfcld = .false. - fhswr = 3600. - fhlwr = 3600. - ialb = 1 - iems = 1 - IAER = 111 - ico2 = 2 - isubc_sw = 2 - isubc_lw = 2 - isol = 2 - lwhtr = .true. - swhtr = .true. - cnvgwd = .true. - shal_cnv = .true. - cal_pre = .true. - redrag = .true. - dspheat = .true. - hybedmf = .true. - random_clds = .true. - trans_trac = .false. - cnvcld = .true. - imfshalcnv = 2 - imfdeepcnv = 2 - cdmbgwd = 3.5,0.25 - prslrd0 = 0. - ivegsrc = 1 - isot = 1 - debug = .true. - nstf_name = 2,0,1,0,5 - xkzminv = 0.3 - xkzm_m = 1.0 - xkzm_h = 1.0 - jcap = 574 - -/ - -&nggps_diag_nml - fdiag = @[FDIAG] -/ - -&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 - FTSFS = 90 - FAISS = 99999 - FSNOL = 99999 - FSICL = 99999 - FTSFL = 99999, - FAISL = 99999, - FVETL = 99999, - FSOTL = 99999, - FvmnL = 99999, - FvmxL = 99999, - FSLPL = 99999, - FABSL = 99999, - FSNOS = 99999, - FSICS = 99999, -/ diff --git a/scm/etc/case_config/input_CPT_adv.nml b/scm/etc/case_config/input_CPT_adv.nml deleted file mode 100644 index 6fe3044c..00000000 --- a/scm/etc/case_config/input_CPT_adv.nml +++ /dev/null @@ -1,288 +0,0 @@ -&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 = @[FDIAG] - ccpp_suite = 'ccpp_suite.xml' -/ - -&diag_manager_nml - prepend_date = .F. -/ - -&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_grid_nml - grid_file = 'INPUT/grid_spec.nc' -/ - -&fv_core_nml - layout = @[INPES],@[JNPES] - io_layout = 1,1 - npx = 97 - npy = 97 - ntiles = 6, - npz = @[NPZ] - grid_type = -1 - make_nh = @[MAKE_NH] - fv_debug = .F. - range_warn = .F. - reset_eta = .F. - n_sponge = 30 - nudge_qv = .T. - rf_fast = .F. - tau = 5. - rf_cutoff = 7.5e2 - d2_bg_k1 = 0.15 - d2_bg_k2 = 0.02 - kord_tm = -9 - kord_mt = 9 - kord_wz = 9 - kord_tr = 9 - hydrostatic = .F. - phys_hydrostatic = .F. - use_hydro_pressure = .F. - beta = 0. - a_imp = 1. - p_fac = 0.1 - k_split = 1 - n_split = 8 - nwat = 6 - na_init = @[NA_INIT] - d_ext = 0.0 - dnats = 1 - fv_sg_adj = 600 - 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 = @[EXTERNAL_IC] - external_eta = .T. - gfs_phil = .false. - nggps_ic = @[NGGPS_IC] - mountain = @[MOUNTAIN] - ncep_ic = .F. - d_con = 1. - hord_mt = 6 - hord_vt = 6 - hord_tm = 6 - hord_dp = -6 - hord_tr = 8 - adjust_dry_mass = .F. - consv_te = 1. - do_sat_adj = .T. - consv_am = .F. - fill = .T. - dwind_2d = .F. - print_freq = 6 - warm_start = @[WARM_START] - read_increment = @[READ_INCREMENT] - res_latlon_dynamics = "fv3_increment.nc" - no_dycore = .false. - z_tracer = .T. -/ - -#&coupler_nml -# months = 0 -# days = 1 -# hours = 0 -# dt_atmos = 1200 -# dt_ocean = 1200 -# current_date = 2016,10,03,00,0,0 -# calendar = 'julian' -# memuse_verbose = .false. -# atmos_nthreads = 1 -# use_hyper_thread = .false. -# ncores_per_node = 24 -#/ - -&external_ic_nml - filtered_terrain = .true. - levp = @[NPZP] - gfs_dwinds = .true. - checker_tr = .F. - nt_checker = 0 -/ - -&gfs_physics_nml - fhzero = 6. - ldiag3d = .true. - fhcyc = 24. - nst_anl = .true. - use_ufo = .true. - crtrh = 1.00, 1.00, 0.95 - pre_rad = .false. - ncld = 5 - imp_physics = 11 - pdfcld = .false. - fhswr = 3600. - fhlwr = 3600. - ialb = 1 - iems = 1 - IAER = 111 - ico2 = 2 - isubc_sw = 2 - isubc_lw = 2 - isol = 2 - lwhtr = .true. - swhtr = .true. - cnvgwd = .true. - shal_cnv = .false. - cal_pre = .true. - redrag = .true. - dspheat = .false. - hybedmf = .false. - satmedmf = .false. - random_clds = .true. - trans_trac = .true. - cnvcld = .false. - imfshalcnv = -1 - imfdeepcnv = 2 - cdmbgwd = 3.5,0.25 - prslrd0 = 0. - ivegsrc = 1 - isot = 1 - debug = .true. - nstf_name = 2,0,1,0,5 - xkzminv = 0.3 - xkzm_m = 1.0 - xkzm_h = 1.0 - do_sppt = .false. - do_shum = .false. - do_skeb = .false. - do_sfcperts = .false. - jcap = 574 - do_shoc = .true. - shoc_parm = 7000.0, 1.0, 2.0, 0.7, -999.0 - shoc_cld = .true. - shcnvcw = .false. - xkzm_s = 1.0 - ccwf = 1.0, 1.0 - dlqf = 0.25, 0.05 - ctei_rm = 0.60, 0.23 - rhcmax = 0.9999999 - -/ - -&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 = 300. - 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. -/ - -&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 - FTSFS = 90 - FAISS = 99999 - FSNOL = 99999 - FSICL = 99999 - FTSFL = 99999, - FAISL = 99999, - FVETL = 99999, - FSOTL = 99999, - FvmnL = 99999, - FvmxL = 99999, - FSLPL = 99999, - FABSL = 99999, - FSNOS = 99999, - FSICS = 99999, -/ -&nam_stochy -/ -&nam_sfcperts -/ diff --git a/scm/etc/case_config/input_MG.nml b/scm/etc/case_config/input_MG.nml deleted file mode 100644 index e8baa770..00000000 --- a/scm/etc/case_config/input_MG.nml +++ /dev/null @@ -1,302 +0,0 @@ -&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 = @[FDIAG] - ccpp_suite = 'ccpp_suite.xml' -/ - -&diag_manager_nml - prepend_date = .F. -/ - -&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_grid_nml - grid_file = 'INPUT/grid_spec.nc' -/ - -&fv_core_nml - layout = @[INPES],@[JNPES] - io_layout = 1,1 - npx = 97 - npy = 97 - ntiles = 6, - npz = @[NPZ] - grid_type = -1 - make_nh = @[MAKE_NH] - fv_debug = .F. - range_warn = .F. - reset_eta = .F. - n_sponge = 30 - nudge_qv = .T. - rf_fast = .F. - tau = 5. - rf_cutoff = 7.5e2 - d2_bg_k1 = 0.15 - d2_bg_k2 = 0.02 - kord_tm = -9 - kord_mt = 9 - kord_wz = 9 - kord_tr = 9 - hydrostatic = .F. - phys_hydrostatic = .F. - use_hydro_pressure = .F. - beta = 0. - a_imp = 1. - p_fac = 0.1 - k_split = 1 - n_split = 8 - nwat = 6 - na_init = @[NA_INIT] - d_ext = 0.0 - dnats = 1 - fv_sg_adj = 600 - 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 = @[EXTERNAL_IC] - external_eta = .T. - gfs_phil = .false. - nggps_ic = @[NGGPS_IC] - mountain = @[MOUNTAIN] - ncep_ic = .F. - d_con = 1. - hord_mt = 6 - hord_vt = 6 - hord_tm = 6 - hord_dp = -6 - hord_tr = 8 - adjust_dry_mass = .F. - consv_te = 1. - do_sat_adj = .T. - consv_am = .F. - fill = .T. - dwind_2d = .F. - print_freq = 6 - warm_start = @[WARM_START] - read_increment = @[READ_INCREMENT] - res_latlon_dynamics = "fv3_increment.nc" - no_dycore = .false. - z_tracer = .T. -/ - -#&coupler_nml -# months = 0 -# days = 1 -# hours = 0 -# dt_atmos = 1200 -# dt_ocean = 1200 -# current_date = 2016,10,03,00,0,0 -# calendar = 'julian' -# memuse_verbose = .false. -# atmos_nthreads = 1 -# use_hyper_thread = .false. -# ncores_per_node = 24 -#/ - -&external_ic_nml - filtered_terrain = .true. - levp = @[NPZP] - gfs_dwinds = .true. - checker_tr = .F. - nt_checker = 0 -/ - -&gfs_physics_nml - fhzero = 6. - ldiag3d = .true. - fhcyc = 24. - nst_anl = .true. - use_ufo = .true. - pre_rad = .false. - crtrh = 1.00,1.00,0.95 - ncld = 2 - imp_physics = 10 - pdfcld = .false. - fhswr = 3600. - fhlwr = 3600. - ialb = 1 - iems = 1 - IAER = 111 - 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 = .true. - satmedmf = .false. - random_clds = .true. - trans_trac = .false. - cnvcld = .false. - imfshalcnv = 2 - imfdeepcnv = 2 - cdmbgwd = 3.5,0.25 - prslrd0 = 0. - ivegsrc = 1 - isot = 1 - debug = .false. - nstf_name = 2,0,1,0,5 - xkzminv = 0.3 - do_sppt = .false. - do_shum = .false. - do_skeb = .false. - do_sfcperts = .false. - jcap = 574 - ras = .false. - cscnv = .false. - do_shoc = .false. - shoc_parm = 7000.0,1.0,2.0,0.7,-999.0 - do_aw = .false. - shoc_cld = .false. - oz_phys = .false. - oz_phys_2015 = .true. - h2o_phys = .false. - shcnvcw = .false. - xkzm_h = 0.5 - xkzm_m = 0.5 - xkzm_s = 1.0 - ccwf = 1.0,1.0 - dlqf = 0.25,0.05 - mg_dcs = 350.0 - mg_ts_auto_ice = 360 - mg_qcvar = 2.0 - fprcp = 1 - cs_parm = 8.0,4.0,1.5e3,4.0e3,20.0,1.0,0.0,1.0,0.0,0.0 - ctei_rm = 0.60,0.23 - max_lon = 8000 - max_lat = 4000 - rhcmax = 0.9999999 - effr_in = .true. - -/ - -&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 = 300. - 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. -/ - -&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 - FTSFS = 90 - FAISS = 99999 - FSNOL = 99999 - FSICL = 99999 - FTSFL = 99999, - FAISL = 99999, - FVETL = 99999, - FSOTL = 99999, - FvmnL = 99999, - FvmxL = 99999, - FSLPL = 99999, - FABSL = 99999, - FSNOS = 99999, - FSICS = 99999, -/ -&nam_stochy -/ -&nam_sfcperts -/ diff --git a/scm/etc/case_config/input_namelists/input_fv3_control.nml b/scm/etc/case_config/input_namelists/input_fv3_control.nml new file mode 100644 index 00000000..bc05b447 --- /dev/null +++ b/scm/etc/case_config/input_namelists/input_fv3_control.nml @@ -0,0 +1,50 @@ +&gfs_physics_nml + fhzero = 6. + ldiag3d = .true. + fhcyc = 24. + nst_anl = .true. + use_ufo = .true. + pre_rad = .false. + ncld = 1 + imp_physics = 99 + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + IAER = 111 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .true. + cal_pre = .true. + redrag = .true. + dspheat = .true. + hybedmf = .true. + satmedmf = .false. + random_clds = .true. + trans_trac = .false. + cnvcld = .true. + imfshalcnv = 2 + imfdeepcnv = 2 + cdmbgwd = 3.5,0.25 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + debug = .true. + oz_phys = .true. + oz_phys_2015 = .false. + nstf_name = 2,1,1,0,5 + cplflx = .false. + iau_delthrs = 6 + iaufhrs = 30 + iau_inc_files = "''" + do_sppt = .false. + do_shum = .false. + do_skeb = .false. + do_sfcperts = .false. +/ diff --git a/scm/etc/case_config/input_namelists/input_fv3_cpt.nml b/scm/etc/case_config/input_namelists/input_fv3_cpt.nml new file mode 100644 index 00000000..7740a6c3 --- /dev/null +++ b/scm/etc/case_config/input_namelists/input_fv3_cpt.nml @@ -0,0 +1,78 @@ +&gfs_physics_nml + fhzero = 6. + ldiag3d = .true. + fhcyc = 24. + nst_anl = .true. + use_ufo = .true. + pre_rad = .false. + crtrh = 0.93,0.90,0.95 + ncld = 2 + imp_physics = 10 + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + IAER = 111 + 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 = .false. + hybedmf = .true. + satmedmf = .false. + random_clds = .true. + trans_trac = .true. + cnvcld = .false. + imfshalcnv = 2 + imfdeepcnv = -1 + cdmbgwd = 3.5,0.25 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + oz_phys = .false. + oz_phys_2015 = .true. + debug = .true. + ras = .false. + cscnv = .true. + do_shoc = .false. + shoc_parm = 7000.0,1.0,2.0,0.7,-999.0 + do_aw = .true. + shoc_cld = .false. + h2o_phys = .true. + shcnvcw = .false. + xkzm_h = 0.5 + xkzm_m = 0.5 + xkzm_s = 1.0 + ccwf = 1.0,1.0 + dlqf = 0.25,0.05 + mg_dcs = 200.0 + mg_ts_auto_ice = 180.0,900.0 + mg_qcvar = 1.0 + fprcp = 2 + pdfflag = 4 + iccn = .false. + aero_in = .false. + mg_do_graupel = .true. + mg_do_hail = .false. + do_sb_physics = .true. + mg_do_ice_gmao = .false. + mg_do_liq_liu = .true. + cs_parm = 8.0,4.0,1.0e3,3.5e3,20.0,1.0,0.0,1.0,0.6,0.0 + ctei_rm = 0.60,0.23 + max_lon = 8000 + max_lat = 4000 + rhcmax = 0.9999999 + effr_in = .true. + + nstf_name = 2,1,1,0,5 + iau_delthrs = 6 + iaufhrs = 30 + iau_inc_files = "''" +/ diff --git a/scm/etc/case_config/input_namelists/input_fv3_csawmgshoc.nml b/scm/etc/case_config/input_namelists/input_fv3_csawmgshoc.nml new file mode 100644 index 00000000..c572f748 --- /dev/null +++ b/scm/etc/case_config/input_namelists/input_fv3_csawmgshoc.nml @@ -0,0 +1,79 @@ +&gfs_physics_nml + fhzero = 6. + ldiag3d = .true. + fhcyc = 24. + nst_anl = .true. + use_ufo = .true. + pre_rad = .false. + crtrh = 1.00,1.00,0.95 + ncld = 2 + imp_physics = 10 + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + IAER = 111 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .false.. + cal_pre = .false. + redrag = .true. + dspheat = .false. + hybedmf = .false. + satmedmf = .false. + random_clds = .true. + trans_trac = .true. + cnvcld = .false. + imfshalcnv = -1 + imfdeepcnv = -1 + cdmbgwd = 3.5,0.25 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + debug = .false. + + ras = .false. + cscnv = .true. + do_shoc = .true. + shoc_parm = 7000.0,1.0,2.0,0.7,-999.0 + do_aw = .true. + shoc_cld = .true. + h2o_phys = .true. + shcnvcw = .false. + xkzm_h = 1.0 + xkzm_m = 1.0 + xkzm_s = 1.0 + ccwf = 1.0,1.0 + dlqf = 0.25,0.05 + mg_dcs = 200.0 + mg_ts_auto_ice = 180.0,900.0 + mg_qcvar = 1.0 + fprcp = 2 + pdfflag = 4 + iccn = .false. + aero_in = .false. + mg_do_graupel = .true. + mg_do_hail = .false. + do_sb_physics = .true. + mg_do_ice_gmao = .false. + mg_do_liq_liu = .true. + cs_parm = 8.0,4.0,1.0e3,3.5e3,20.0,1.0,0.0,1.0,0.6,0.0 + ctei_rm = 0.60,0.23 + max_lon = 8000 + max_lat = 4000 + rhcmax = 0.9999999 + effr_in = .true. + oz_phys = .false. + oz_phys_2015 = .true. + + nstf_name = 2,1,1,0,5 + iau_delthrs = 6 + iaufhrs = 30 + iau_inc_files = "''" +/ diff --git a/scm/etc/case_config/input_namelists/input_fv3_gfdlmp.nml b/scm/etc/case_config/input_namelists/input_fv3_gfdlmp.nml new file mode 100644 index 00000000..7b2d9339 --- /dev/null +++ b/scm/etc/case_config/input_namelists/input_fv3_gfdlmp.nml @@ -0,0 +1,97 @@ +&gfs_physics_nml + fhzero = 6. + ldiag3d = .true. + fhcyc = 24. + nst_anl = .true. + use_ufo = .true. + pre_rad = .false. + ncld = 5 + imp_physics = 11 + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + IAER = 111 + 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 = .true. + satmedmf = .false. + random_clds = .false. + trans_trac = .false. + cnvcld = .true. + imfshalcnv = 2 + imfdeepcnv = 2 + cdmbgwd = 3.5,0.25 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + debug = .false. + nstf_name = 2,1,1,0,5 + xkzminv = 0.3 + xkzm_m = 1.0 + xkzm_h = 1.0 + do_sppt = .false. + do_shum = .false. + do_skeb = .false. + 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 = 300. + 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. +/ diff --git a/scm/etc/case_config/input_namelists/input_fv3_gsd.nml b/scm/etc/case_config/input_namelists/input_fv3_gsd.nml new file mode 100644 index 00000000..1a67dfdb --- /dev/null +++ b/scm/etc/case_config/input_namelists/input_fv3_gsd.nml @@ -0,0 +1,62 @@ +&gfs_physics_nml + fhzero = 6. + h2o_phys = .true. + ldiag3d = .false. + fhcyc = 24. + nst_anl = .true. + use_ufo = .true. + pre_rad = .false. + ncld = 5 + imp_physics = 8 + ltaerosol = .false. + lradar = .false. + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + iaer = 111 + ico2 = 2 + isubc_sw = 2 + isubc_lw = 2 + isol = 2 + lwhtr = .true. + swhtr = .true. + cnvgwd = .true. + shal_cnv = .false. + cal_pre = .false. + redrag = .true. + dspheat = .true. + hybedmf = .false. + satmedmf = .false. + do_mynnedmf = .true. + do_mynnsfclay = .false. + random_clds = .false. + trans_trac = .true. + cnvcld = .true. + imfshalcnv = -1 + imfdeepcnv = 3 + cdmbgwd = 3.5,0.25 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + debug = .false. + oz_phys = .false. + oz_phys_2015 = .true. + nstf_name = 2,1,1,0,5 + cplflx = .false. + iau_delthrs = 6 + iaufhrs = 30 + iau_inc_files = "''" + do_sppt = .false. + do_shum = .false. + do_skeb = .false. + do_sfcperts = .false. + lsm = 2 + lsoil_lsm = 9 + icloud_bl = 1 + bl_mynn_tkeadvect = .true. + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + +/ diff --git a/scm/etc/case_config/twpice_2017_GFS.nml b/scm/etc/case_config/twpice_control.nml similarity index 84% rename from scm/etc/case_config/twpice_2017_GFS.nml rename to scm/etc/case_config/twpice_control.nml index afc0fb66..c26b1cad 100644 --- a/scm/etc/case_config/twpice_2017_GFS.nml +++ b/scm/etc/case_config/twpice_control.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 2138400, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_twpice_2017_GFS', +output_dir = 'output_twpice_control', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -26,6 +26,6 @@ $end $physics_config physics_suite = 'suite_SCM_GFS_2017_updated', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input_2017_GFS.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_control.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/twpice_MG.nml b/scm/etc/case_config/twpice_cpt.nml similarity index 79% rename from scm/etc/case_config/twpice_MG.nml rename to scm/etc/case_config/twpice_cpt.nml index b602f794..80705957 100644 --- a/scm/etc/case_config/twpice_MG.nml +++ b/scm/etc/case_config/twpice_cpt.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 2138400, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_twpice_MG', +output_dir = 'output_twpice_cpt', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -24,8 +24,8 @@ hour = 3, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_MG', +physics_suite = 'suite_SCM_CPT_advanced', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input_MG.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_cpt.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/twpice_csawmgshoc.nml b/scm/etc/case_config/twpice_csawmgshoc.nml new file mode 100644 index 00000000..d3528bd7 --- /dev/null +++ b/scm/etc/case_config/twpice_csawmgshoc.nml @@ -0,0 +1,31 @@ +$case_config +model_name = 'FV3', +n_columns = 1, +case_name = 'twpice', +dt = 600.0, +time_scheme = 1, +runtime = 2138400, +output_frequency = 600.0, +n_levels = 64, +output_dir = 'output_twpice_csawmgshoc', +output_file = 'output', +case_data_dir = '../data/processed_case_input', +vert_coord_data_dir = '../data/vert_coord_data', +thermo_forcing_type = 2, +mom_forcing_type = 3, +relax_time = 7200.0, +sfc_flux_spec = .false., +sfc_type = 0, +reference_profile_choice = 1, +year = 2006, +month = 1, +day = 19, +hour = 3, +$end + +$physics_config +physics_suite = 'suite_SCM_GFS_2017_updated_csawmgshoc', +physics_suite_dir = '../../ccpp/suites/', +physics_nml = '../etc/case_config/input_namelists/input_fv3_csawmgshoc.nml', +column_area = 2.0E9, +$end diff --git a/scm/etc/case_config/twpice.nml b/scm/etc/case_config/twpice_gfdlmp.nml similarity index 77% rename from scm/etc/case_config/twpice.nml rename to scm/etc/case_config/twpice_gfdlmp.nml index d5260781..cc88a44b 100644 --- a/scm/etc/case_config/twpice.nml +++ b/scm/etc/case_config/twpice_gfdlmp.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 2138400, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_twpice', +output_dir = 'output_twpice_gfdlmp', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -24,8 +24,8 @@ hour = 3, $end $physics_config -physics_suite = 'suite_SCM_GFS_2018_updated', +physics_suite = 'suite_SCM_GFS_2017_updated_gfdlmp', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_gfdlmp.nml', column_area = 2.0E9, $end diff --git a/scm/etc/case_config/twpice_CPT_adv.nml b/scm/etc/case_config/twpice_gsd.nml similarity index 80% rename from scm/etc/case_config/twpice_CPT_adv.nml rename to scm/etc/case_config/twpice_gsd.nml index 8cefd5ea..cbdc620b 100644 --- a/scm/etc/case_config/twpice_CPT_adv.nml +++ b/scm/etc/case_config/twpice_gsd.nml @@ -7,7 +7,7 @@ time_scheme = 1, runtime = 2138400, output_frequency = 600.0, n_levels = 64, -output_dir = 'output_twpice_CPT_adv', +output_dir = 'output_twpice_gsd', output_file = 'output', case_data_dir = '../data/processed_case_input', vert_coord_data_dir = '../data/vert_coord_data', @@ -24,8 +24,8 @@ hour = 3, $end $physics_config -physics_suite = 'suite_SCM_CPT_adv', +physics_suite = 'suite_SCM_GSD', physics_suite_dir = '../../ccpp/suites/', -physics_nml = '../etc/case_config/input_CPT_advanced.nml', +physics_nml = '../etc/case_config/input_namelists/input_fv3_gsd.nml', column_area = 2.0E9, $end diff --git a/scm/src/CCPP_typedefs.F90 b/scm/src/CCPP_typedefs.F90 new file mode 100644 index 00000000..5fca08cc --- /dev/null +++ b/scm/src/CCPP_typedefs.F90 @@ -0,0 +1,281 @@ +module CCPP_typedefs + + implicit none + +#if 0 +!! \section arg_table_CCPP_typedefs +!! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | +!! |----------------------------------------------------|---------------------------------------------------------------|--------------------------------------------------------------------------|---------|------|------------------------|-----------|--------|----------| +!! | CCPP_interstitial | CCPP_Interstitial_type | derived type CCPP_interstitial_type | DDT | 0 | CCPP_interstitial_type | | none | F | +!! +#endif + + private + + public CCPP_shared_type, CCPP_interstitial_type, kind_dyn + +#ifdef OVERLOAD_R4 + integer, parameter :: kind_dyn = 4 +#else + integer, parameter :: kind_dyn = 8 +#endif + +#if 0 +!! \section arg_table_CCPP_shared_type +!! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | +!! |----------------------------------------------------|---------------------------------------------------------------|-------------------------------------------------------------------------------------|---------|------|-------------|-----------|--------|----------| +!! | CCPP_shared(nt)%hydrostatic | flag_for_hydrostatic_solver | flag for use the hydrostatic or nonhydrostatic solver | flag | 0 | logical | | none | F | +!! | CCPP_shared(nt)%nthreads | omp_threads | number of OpenMP threads available for physics schemes | count | 0 | integer | | none | F | +!! | CCPP_shared(nt)%phys_hydrostatic | flag_for_hydrostatic_heating_from_physics | flag for use of hydrostatic heating in physics | flag | 0 | logical | | none | F | +!! +#endif + type CCPP_shared_type + + logical :: hydrostatic + integer :: nthreads + logical :: phys_hydrostatic + + contains + + procedure :: create => shared_create !< allocate/set data + procedure :: reset => shared_reset !< reset data + procedure :: mprint => shared_print !< print data + + end type CCPP_shared_type + +#if 0 +!! \section arg_table_CCPP_interstitial_type +!! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | +!! |----------------------------------------------------|---------------------------------------------------------------|-------------------------------------------------------------------------------------|---------|------|-------------|-----------|--------|----------| +!! | CCPP_interstitial%akap | kappa_dry_for_fast_physics | modified kappa for fast physics | none | 0 | real | kind_dyn | none | F | +!! | CCPP_interstitial%bdt | | large time step for dynamics | s | 0 | real | kind_dyn | none | F | +!! | CCPP_interstitial%cappa | cappa_moist_gas_constant_at_Lagrangian_surface | cappa(i,j,k) = rdgas / ( rdgas + cvm(i)/(1.+r_vir*q(i,j,k,sphum)) ) | none | 3 | real | kind_dyn | none | F | +!! | CCPP_interstitial%dtdt | tendency_of_air_temperature_at_Lagrangian_surface | air temperature tendency due to fast physics at Lagrangian surface | K s-1 | 3 | real | kind_dyn | none | F | +!! | CCPP_interstitial%do_qa | flag_for_inline_cloud_fraction_calculation | flag for the inline cloud fraction calculation | flag | 0 | logical | | none | F | +!! | CCPP_interstitial%fast_mp_consv | flag_for_fast_microphysics_energy_conservation | flag for fast microphysics energy conservation | flag | 0 | logical | | none | F | +!! | CCPP_interstitial%kmp | top_layer_index_for_fast_physics | top_layer_inder_for_gfdl_mp | index | 0 | integer | | none | F | +!! | CCPP_interstitial%last_step | flag_for_the_last_step_of_k_split_remapping | flag for the last step of k-split remapping | flag | 0 | logical | | none | F | +!! | CCPP_interstitial%mdt | time_step_for_remapping_for_fast_physics | remapping time step | s | 0 | real | kind_dyn | none | F | +!! | CCPP_interstitial%npzdelz | vertical_dimension_for_thickness_at_Lagrangian_surface | vertical dimension for thickness at Lagrangian surface | count | 0 | integer | | none | F | +!! | CCPP_interstitial%out_dt | flag_for_tendency_of_air_temperature_at_Lagrangian_surface | flag for calculating tendency of air temperature due to fast physics | flag | 0 | logical | | none | F | +!! | CCPP_interstitial%te0_2d | atmosphere_energy_content_in_column | atmosphere total energy in columns | J m-2 | 2 | real | kind_dyn | none | F | +!! | CCPP_interstitial%te0 | atmosphere_energy_content_at_Lagrangian_surface | atmosphere total energy at Lagrangian surface | J m-2 | 3 | real | kind_dyn | none | F | +!! | CCPP_interstitial%zvir | ratio_of_vapor_to_dry_air_gas_constants_minus_one_default_kind| zvir=rv/rd-1.0 | none | 0 | real | kind_dyn | none | F | +!! +#endif + type CCPP_interstitial_type + + real(kind_dyn) :: akap + real(kind_dyn) :: bdt + real(kind_dyn), pointer :: cappa(:,:,:) + logical :: do_qa + real(kind_dyn), pointer :: dtdt(:,:,:) + logical :: fast_mp_consv + integer :: kmp + logical :: last_step + real(kind_dyn) :: mdt + integer :: npzdelz + logical :: out_dt + real(kind_dyn), pointer :: pfull(:) + real(kind_dyn), pointer :: te0_2d(:,:) ! called te_2d in fv_dynamics, te0_2d in Lagrangian_to_Eulerian, te0_2d in fv_sat_adj + real(kind_dyn), pointer :: te0(:,:,:) ! called dp1 in fv_dynamics, te in Lagrangian_to_Eulerian, te0 in fv_sat_adj + real(kind_dyn) :: zvir + + contains + + procedure :: create => interstitial_create !< allocate array data + procedure :: reset => interstitial_reset !< reset array data + procedure :: mprint => interstitial_print !< print array data + + end type CCPP_interstitial_type + +contains + +!----------------------------- +! CCPP_shared_type +!----------------------------- + subroutine shared_create (Shared, hydrostatic, phys_hydrostatic) + ! + implicit none + ! + class(CCPP_shared_type) :: Shared + logical, intent(in) :: hydrostatic + logical, intent(in) :: phys_hydrostatic + ! + Shared%hydrostatic = hydrostatic + ! Number of OpenMP threads available for schemes, default only one + Shared%nthreads = 1 + ! DH* + ! The input phys_hydrostatic from Atm does not match the + ! hardcoded value for calling GFDL MP in GFS_physics_driver.F90 + !Shared%phys_hydrostatic = phys_hydrostatic + Shared%phys_hydrostatic = .true. + ! *DH + ! + call Shared%reset() + ! + end subroutine shared_create + + subroutine shared_reset (Shared) + ! + implicit none + ! + class(CCPP_shared_type) :: Shared + ! + end subroutine shared_reset + + subroutine shared_print(Shared) + ! + implicit none + ! + class(CCPP_shared_type) :: Shared + ! + write (0,'(a)') 'Shared_print' + write (0,*) 'Shared%hydrostatic = ', Shared%hydrostatic + write (0,*) 'Shared%nthreads = ', Shared%nthreads + write (0,*) 'Shared%phys_hydrostatic = ', Shared%phys_hydrostatic + write (0,*) 'Shared_print: end' + ! + end subroutine shared_print + +!----------------------------- +! CCPP_interstitial_type +!----------------------------- + subroutine interstitial_create (Interstitial, is, ie, isd, ied, js, je, jsd, jed, npz, & + dt_atmos, p_split, k_split, zvir, p_ref, ak, bk, do_qa, & + kappa, hydrostatic) + ! + implicit none + ! + class(CCPP_interstitial_type) :: Interstitial + integer, intent(in) :: is + integer, intent(in) :: ie + integer, intent(in) :: isd + integer, intent(in) :: ied + integer, intent(in) :: js + integer, intent(in) :: je + integer, intent(in) :: jsd + integer, intent(in) :: jed + integer, intent(in) :: npz + real(kind_dyn), intent(in) :: dt_atmos + integer, intent(in) :: p_split + integer, intent(in) :: k_split + real(kind_dyn), intent(in) :: zvir + real(kind_dyn), intent(in) :: p_ref + real(kind_dyn), intent(in) :: ak(:) + real(kind_dyn), intent(in) :: bk(:) + logical, intent(in) :: do_qa + real(kind_dyn), intent(in) :: kappa + logical, intent(in) :: hydrostatic + ! +#ifdef MOIST_CAPPA + allocate (Interstitial%cappa (isd:ied, jsd:jed, 1:npz) ) +#else + allocate (Interstitial%cappa (isd:isd, jsd:jsd, 1) ) +#endif + allocate (Interstitial%dtdt (is:ie, js:je, 1:npz) ) + allocate (Interstitial%pfull (1:npz) ) + allocate (Interstitial%te0_2d (is:ie, js:je) ) + allocate (Interstitial%te0 (isd:ied, jsd:jed, 1:npz) ) + ! + ! Initialize variables to default values +#ifdef SW_DYNAMICS + Interstitial%akap = 1. +#else + Interstitial%akap = kappa +#endif + Interstitial%bdt = dt_atmos/real(abs(p_split)) + Interstitial%do_qa = do_qa + Interstitial%mdt = Interstitial%bdt/real(k_split) + if (hydrostatic) then + Interstitial%npzdelz = 1 + else + Interstitial%npzdelz = npz + end if + Interstitial%zvir = zvir + ! + ! Calculate vertical pressure levels + call interstitital_calculate_pressure_levels(Interstitial, npz, p_ref, ak, bk) + ! + ! Reset all other variables + call Interstitial%reset() + ! + end subroutine interstitial_create + + subroutine interstitital_calculate_pressure_levels(Interstitial, npz, p_ref, ak, bk) + + implicit none + + class(CCPP_interstitial_type) :: Interstitial + integer, intent(in) :: npz + real(kind_dyn), intent(in) :: p_ref + real(kind_dyn), intent(in) :: ak(:) + real(kind_dyn), intent(in) :: bk(:) + + real(kind_dyn) :: ph1 + real(kind_dyn) :: ph2 + integer :: k + +#ifdef SW_DYNAMICS + Interstitial%pfull(1) = 0.5*p_ref +#else + do k=1,npz + ph1 = ak(k ) + bk(k )*p_ref + ph2 = ak(k+1) + bk(k+1)*p_ref + Interstitial%pfull(k) = (ph2 - ph1) / log(ph2/ph1) + enddo +#endif + ! DH* This is copied from fv_mapz.F90, does it work with SW_DYNAMICS? + do k=1,npz + Interstitial%kmp = k + if ( Interstitial%pfull(k) > 10.E2 ) exit + enddo + end subroutine interstitital_calculate_pressure_levels + + subroutine interstitial_reset (Interstitial) + ! + implicit none + ! + class(CCPP_interstitial_type) :: Interstitial + ! + Interstitial%cappa = 0.0 + Interstitial%dtdt = 0.0 + Interstitial%fast_mp_consv = .false. + Interstitial%last_step = .false. + Interstitial%out_dt = .false. + Interstitial%te0_2d = 0.0 + Interstitial%te0 = 0.0 + ! + end subroutine interstitial_reset + + subroutine interstitial_print(Interstitial) + ! + implicit none + ! + class(CCPP_interstitial_type) :: Interstitial + ! + ! Print static variables + write (0,'(a)') 'Interstitial_print' + write (0,*) 'Interstitial_print: values that do not change' + write (0,*) 'Interstitial%akap = ', Interstitial%akap + write (0,*) 'Interstitial%bdt = ', Interstitial%bdt + write (0,*) 'Interstitial%kmp = ', Interstitial%kmp + write (0,*) 'Interstitial%mdt = ', Interstitial%mdt + write (0,*) 'sum(Interstitial%pfull ) = ', sum(Interstitial%pfull ) + write (0,*) 'Interstitial%zvir = ', Interstitial%zvir + ! Print all other variables + write (0,*) 'Interstitial_print: values that change' + write (0,*) 'sum(Interstitial%cappa ) = ', sum(Interstitial%cappa ) + write (0,*) 'Interstitial%do_qa = ', Interstitial%do_qa + write (0,*) 'sum(Interstitial%dtdt ) = ', sum(Interstitial%dtdt ) + write (0,*) 'Interstitial%fast_mp_consv = ', Interstitial%fast_mp_consv + write (0,*) 'Interstitial%last_step = ', Interstitial%last_step + write (0,*) 'Interstitial%out_dt = ', Interstitial%out_dt + write (0,*) 'sum(Interstitial%te0_2d ) = ', sum(Interstitial%te0_2d ) + write (0,*) 'sum(Interstitial%te0 ) = ', sum(Interstitial%te0 ) + write (0,*) 'Interstitial_print: end' + ! + end subroutine interstitial_print + +end module CCPP_typedefs + diff --git a/scm/src/GFS_typedefs.F90 b/scm/src/GFS_typedefs.F90 index 86a6d433..08a28aa9 100644 --- a/scm/src/GFS_typedefs.F90 +++ b/scm/src/GFS_typedefs.F90 @@ -2572,6 +2572,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%iau_inc_files = iau_inc_files Model%iau_delthrs = iau_delthrs + !--- debug flag + Model%debug = debug + Model%pre_rad = pre_rad + !--- tracer handling Model%ntrac = size(tracer_names) Model%ntracp1 = Model%ntrac + 1 @@ -2599,10 +2603,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%ncnvcld3d = ncnvcld3d Model%nctp = nctp - !--- debug flag - Model%debug = debug - Model%pre_rad = pre_rad - !--- set initial values for time varying properties Model%ipt = 1 Model%lprnt = .false. diff --git a/scm/src/gmtb_scm_type_defs.f90 b/scm/src/gmtb_scm_type_defs.f90 index 7f0ee1fa..57cf2ecc 100644 --- a/scm/src/gmtb_scm_type_defs.f90 +++ b/scm/src/gmtb_scm_type_defs.f90 @@ -67,6 +67,8 @@ module gmtb_scm_type_defs integer :: snow_nc_index !< index for snow number concentration in the tracer array integer :: graupel_nc_index !< index for graupel number concentration in the tracer array integer :: tke_index !< index for TKE in the tracer array + integer :: water_friendly_aerosol_index !< index for water-friendly aerosols in the tracer array + integer :: ice_friendly_aerosol_index !< index for ice-friendly aerosols in the tracer array integer :: init_year, init_month, init_day, init_hour character(len=32), allocatable :: tracer_names(:) !< name of physics suite (must be "GFS_operational" for prototype) integer, allocatable :: blksz(:) @@ -466,8 +468,8 @@ module gmtb_scm_type_defs !! | physics%Statein(i)%qgrs(:,:,scm_state%snow_index) | snow_water_mixing_ratio | moist (dry+vapor, no condensates) mixing ratio of snow water | kg kg-1 | 2 | real | kind_phys | none | F | !! | physics%Statein(i)%qgrs(:,:,scm_state%graupel_index) | graupel_mixing_ratio | moist (dry+vapor, no condensates) mixing ratio of graupel | kg kg-1 | 2 | real | kind_phys | none | F | !! | physics%Statein(i)%qgrs(:,:,scm_state%ozone_index) | ozone_mixing_ratio | ozone mixing ratio | kg kg-1 | 2 | real | kind_phys | none | F | -!! | physics%Statein(i)%qgrs(:,:,physics%Model(i)%ntwa) | water_friendly_aerosol_number_concentration | number concentration of water-friendly aerosols | kg-1 | 2 | real | kind_phys | none | F | -!! | physics%Statein(i)%qgrs(:,:,physics%Model(i)%ntia) | ice_friendly_aerosol_number_concentration | number concentration of ice-friendly aerosols | kg-1 | 2 | real | kind_phys | none | F | +!! | physics%Statein(i)%qgrs(:,:,scm_state%water_friendly_aerosol_index) | water_friendly_aerosol_number_concentration | number concentration of water-friendly aerosols | kg-1 | 2 | real | kind_phys | none | F | +!! | physics%Statein(i)%qgrs(:,:,scm_state%ice_friendly_aerosol_index) | ice_friendly_aerosol_number_concentration | number concentration of ice-friendly aerosols | kg-1 | 2 | real | kind_phys | none | F | !! | physics%Statein(i)%qgrs(:,:,scm_state%cloud_droplet_nc_index) | cloud_droplet_number_concentration | number concentration of cloud droplets (liquid) | kg-1 | 2 | real | kind_phys | none | F | !! | physics%Statein(i)%qgrs(:,:,scm_state%cloud_ice_nc_index) | ice_number_concentration | number concentration of ice | kg-1 | 2 | real | kind_phys | none | F | !! | physics%Statein(i)%qgrs(:,:,scm_state%rain_nc_index) | rain_number_concentration | number concentration of rain | kg-1 | 2 | real | kind_phys | none | F | @@ -1283,6 +1285,8 @@ subroutine scm_state_create(scm_state, n_columns, n_levels, n_time_levels) scm_state%snow_nc_index = 12 scm_state%graupel_nc_index = 13 scm_state%tke_index = 14 + scm_state%water_friendly_aerosol_index = 15 + scm_state%ice_friendly_aerosol_index = 16 scm_state%tracer_names(1) = 'vap_wat' scm_state%tracer_names(2) = 'o3mr' scm_state%tracer_names(3) = 'liq_wat' @@ -1297,6 +1301,8 @@ subroutine scm_state_create(scm_state, n_columns, n_levels, n_time_levels) scm_state%tracer_names(12)= 'snow_nc' scm_state%tracer_names(13)= 'graupel_nc' scm_state%tracer_names(14)= 'sgs_tke' + scm_state%tracer_names(15)= 'liq_aero' + scm_state%tracer_names(16)= 'ice_aero' scm_state%n_itt_swrad = int_zero scm_state%n_itt_lwrad = int_zero scm_state%n_itt_out = int_zero @@ -1498,7 +1504,7 @@ subroutine physics_create(physics, n_columns, n_levels, lats, pres) physics%Init_parm(i)%gnx = int_one physics%Init_parm(i)%gny = int_one physics%Init_parm(i)%nlunit = int_one - physics%Init_parm(i)%logunit= int_neg_one + physics%Init_parm(i)%logunit= 2 physics%Init_parm(i)%bdat(:) = zeroes_8(:) physics%Init_parm(i)%cdat(:) = zeroes_8(:) physics%Init_parm(i)%dt_dycore = kind_phys_zero From d6a7c8199a38326fcf07c6e948c41d00e93d61c0 Mon Sep 17 00:00:00 2001 From: "Grant.Firl" Date: Mon, 25 Feb 2019 14:45:53 -0700 Subject: [PATCH 2/5] attempt at updating SCM codebase to work with changes to CCPP framework and physics since the new year --- ccpp/framework | 2 +- ccpp/physics | 2 +- scm/src/GFS_typedefs.F90 | 290 +++++++++++++++++++++------------ scm/src/gmtb_scm.F90 | 13 +- scm/src/gmtb_scm_setup.f90 | 10 +- scm/src/gmtb_scm_type_defs.f90 | 101 ++++++------ 6 files changed, 261 insertions(+), 157 deletions(-) diff --git a/ccpp/framework b/ccpp/framework index 2c6143c5..1c42b090 160000 --- a/ccpp/framework +++ b/ccpp/framework @@ -1 +1 @@ -Subproject commit 2c6143c5777abd4f7c6213935bdd08351676cb87 +Subproject commit 1c42b090a45f0063c563c7843d5501dcd92fdf2d diff --git a/ccpp/physics b/ccpp/physics index 11b29de8..4fca8c2a 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 11b29de82d93560b7091f5fc45c7b3eff80a1ad8 +Subproject commit 4fca8c2af53a9192538aa1137bc423a43c35d90e diff --git a/scm/src/GFS_typedefs.F90 b/scm/src/GFS_typedefs.F90 index 08a28aa9..977e5b55 100644 --- a/scm/src/GFS_typedefs.F90 +++ b/scm/src/GFS_typedefs.F90 @@ -26,11 +26,35 @@ module GFS_typedefs ! from aerclm_def integer, parameter :: ntrcaerm = 15 - ! These will be set later in IPD_Control%initialize, + ! These will be set later in GFS_Control%initialize, ! since they depend on the runtime config (e.g. Model%ntoz, Model%h2o_phys, Model%aero_in) private :: ntrcaer integer :: ntrcaer +#if 0 +!> \section arg_table_GFS_typedefs +!! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | +!! |---------------------------------|----------------------------------------------------------|---------------------------------------------------------|---------------|------|-----------------------|-----------|--------|----------| +!! | GFS_cldprop_type | GFS_cldprop_type | definition of type GFS_cldprop_type | DDT | 0 | GFS_cldprop_type | | none | F | +!! | GFS_control_type | GFS_control_type | definition of type GFS_control_type | DDT | 0 | GFS_control_type | | none | F | +!! | GFS_coupling_type | GFS_coupling_type | definition of type GFS_coupling_type | DDT | 0 | GFS_coupling_type | | none | F | +!! | GFS_data_type | GFS_data_type | definition of type GFS_data_type | DDT | 0 | GFS_data_type | | none | F | +!! | GFS_diag_type | GFS_diag_type | definition of type GFS_diag_type | DDT | 0 | GFS_diag_type | | none | F | +!! | GFS_grid_type | GFS_grid_type | definition of type GFS_grid_type | DDT | 0 | GFS_grid_type | | none | F | +!! | GFS_interstitial_type | GFS_interstitial_type | definition of type GFS_interstitial_type | DDT | 0 | GFS_interstitial_type | | none | F | +!! | GFS_radtend_type | GFS_radtend_type | definition of type GFS_radtend_type | DDT | 0 | GFS_radtend_type | | none | F | +!! | GFS_sfcprop_type | GFS_sfcprop_type | definition of type GFS_sfcprop_type | DDT | 0 | GFS_sfcprop_type | | none | F | +!! | GFS_statein_type | GFS_statein_type | definition of type GFS_statein_type | DDT | 0 | GFS_statein_type | | none | F | +!! | GFS_stateout_type | GFS_stateout_type | definition of type GFS_stateout_type | DDT | 0 | GFS_stateout_type | | none | F | +!! | GFS_tbd_type | GFS_tbd_type | definition of type GFS_tbd_type | DDT | 0 | GFS_tbd_type | | none | F | +!! | cmpfsw_type | cmpfsw_type | definition of type cmpfsw_type | DDT | 0 | cmpfsw_type | | none | F | +!! | sfcflw_type | sfcflw_type | definition of type sfcflw_type | DDT | 0 | sfcflw_type | | none | F | +!! | sfcfsw_type | sfcfsw_type | definition of type sfcfsw_type | DDT | 0 | sfcfsw_type | | none | F | +!! | topflw_type | topflw_type | definition of type topflw_type | DDT | 0 | topflw_type | | none | F | +!! | topfsw_type | topfsw_type | definition of type topfsw_type | DDT | 0 | topfsw_type | | none | F | +!! | LTP | extra_top_layer | extra top layer for radiation | none | 0 | integer | | none | F | +!! +#endif !--- version of physics character(len=64) :: phys_version = 'v2018 FV3GFS BETA VERSION PHYSICS' @@ -97,6 +121,8 @@ module GFS_typedefs integer :: cdat(8) !< model current date in GFS format (same as jdat) real(kind=kind_phys) :: dt_dycore !< dynamics time step in seconds real(kind=kind_phys) :: dt_phys !< physics time step in seconds + !--- restart information + logical :: restart !< flag whether this is a coldstart (.false.) or a warmstart/restart (.true.) !--- blocking data integer, pointer :: blksz(:) !< for explicit data blocking !< default blksz(1)=[nx*ny] @@ -211,7 +237,7 @@ module GFS_typedefs real (kind=kind_phys), pointer :: spec_lh_flux (:) => null() !< specified kinematic surface latent heat flux !-- In/Out - real (kind=kind_phys), pointer :: conv_act(:) => null() !< convective activity conter hli 09/2017 + real (kind=kind_phys), pointer :: conv_act(:) => null() !< convective activity counter hli 09/2017 real (kind=kind_phys), pointer :: hice (:) => null() !< sea ice thickness real (kind=kind_phys), pointer :: weasd (:) => null() !< water equiv of accumulated snow depth (kg/m**2) !< over land and sea ice @@ -220,10 +246,12 @@ module GFS_typedefs real (kind=kind_phys), pointer :: ffhh (:) => null() !< fh parameter from PBL scheme real (kind=kind_phys), pointer :: f10m (:) => null() !< fm at 10m - Ratio of sigma level 1 wind and 10m wind real (kind=kind_phys), pointer :: tprcp (:) => null() !< sfc_fld%tprcp - total precipitation + real (kind=kind_phys), pointer :: sr (:) => null() !< snow ratio : ratio of snow to total precipitation real (kind=kind_phys), pointer :: srflag (:) => null() !< sfc_fld%srflag - snow/rain flag for precipitation real (kind=kind_phys), pointer :: slc (:,:) => null() !< liquid soil moisture real (kind=kind_phys), pointer :: smc (:,:) => null() !< total soil moisture real (kind=kind_phys), pointer :: stc (:,:) => null() !< soil temperature + real (kind=kind_phys), pointer :: wet1 (:) => null() !< normalized soil wetness !--- Out real (kind=kind_phys), pointer :: t2m (:) => null() !< 2 meter temperature @@ -381,7 +409,7 @@ module GFS_typedefs real (kind=kind_phys), pointer :: dwn_mfi (:,:) => null() !< instantaneous convective downdraft mass flux real (kind=kind_phys), pointer :: det_mfi (:,:) => null() !< instantaneous convective detrainment mass flux real (kind=kind_phys), pointer :: cldcovi (:,:) => null() !< instantaneous 3D cloud fraction - real (kind=kind_phys), pointer :: nwfa2d (:) => null() !< instantaneous sfc aerosol source + real (kind=kind_phys), pointer :: nwfa2d (:) => null() !< instantaneous sfc water-friendly aerosol source real (kind=kind_phys), pointer :: nifa2d (:) => null() !< instantaneous ice-friendly sfc aerosol source !--- instantaneous quantities for GSDCHEM coupling @@ -554,6 +582,7 @@ module GFS_typedefs !--- Thompson's microphysical paramters logical :: ltaerosol !< flag for aerosol version, currently not working yet logical :: lradar !< flag for radar reflectivity + real(kind=kind_phys) :: ttendlim !< temperature tendency limiter per time step in K/s !--- GFDL microphysical paramters logical :: lgfdlmprad !< flag for GFDL mp scheme and radiation consistency @@ -690,9 +719,6 @@ module GFS_typedefs !--- near surface temperature model logical :: nst_anl !< flag for NSSTM analysis in gcycle/sfcsub integer :: lsea - real(kind=kind_phys) :: xkzm_m !< [in] bkgd_vdif_m background vertical diffusion for momentum - real(kind=kind_phys) :: xkzm_h !< [in] bkgd_vdif_h background vertical diffusion for heat q - real(kind=kind_phys) :: xkzm_s !< [in] bkgd_vdif_s sigma threshold for background mom. diffusion integer :: nstf_name(5) !< flag 0 for no nst 1 for uncoupled nst and 2 for coupled NST !< nstf_name contains the NSST related parameters !< nstf_name(1) : 0 = NSSTM off, 1 = NSSTM on but uncoupled, 2 = NSSTM on and coupled @@ -700,6 +726,10 @@ module GFS_typedefs !< nstf_name(3) : 1 = NSST analysis on, 0 = NSSTM analysis off !< nstf_name(4) : zsea1 in mm !< nstf_name(5) : zsea2 in mm +!--- background vertical diffusion + real(kind=kind_phys) :: xkzm_m !< [in] bkgd_vdif_m background vertical diffusion for momentum + real(kind=kind_phys) :: xkzm_h !< [in] bkgd_vdif_h background vertical diffusion for heat q + real(kind=kind_phys) :: xkzm_s !< [in] bkgd_vdif_s sigma threshold for background mom. diffusion real(kind=kind_phys) :: xkzminv !< diffusivity in inversion layers real(kind=kind_phys) :: moninq_fac !< turbulence diffusion coefficient factor @@ -721,6 +751,7 @@ module GFS_typedefs character(len=32), pointer :: tracer_names(:) !< array of initialized tracers from dynamic core integer :: ntrac !< number of tracers integer :: ntracp1 !< number of tracers plus one + integer :: ntqv !< tracer index for water vapor (specific humidity) integer :: ntoz !< tracer index for ozone mixing ratio integer :: ntcw !< tracer index for cloud condensate (or liquid water) integer :: ntiw !< tracer index for ice water @@ -752,7 +783,11 @@ module GFS_typedefs integer :: nctp !< number of cloud types in Chikira-Sugiyama scheme integer :: ncnvw !< the index of cnvw in phy_f3d integer :: ncnvc !< the index of cnvc in phy_f3d - integer :: ngreffr !< the index of graupel effective radius in phy_f3d + integer :: nleffr !< the index of cloud liquid water effective radius in phy_f3d + integer :: nieffr !< the index of ice effective radius in phy_f3d + integer :: nreffr !< the index of rain effective radius in phy_f3d + integer :: nseffr !< the index of snow effective radius in phy_f3d + integer :: ngeffr !< the index of graupel effective radius in phy_f3d !--- debug flag logical :: debug @@ -774,6 +809,8 @@ module GFS_typedefs real(kind=kind_phys) :: fhour !< curent forecast hour real(kind=kind_phys) :: zhour !< previous hour diagnostic buckets emptied integer :: kdt !< current forecast iteration + logical :: first_time_step !< flag signaling first time step for time integration routine + logical :: restart !< flag whether this is a coldstart (.false.) or a warmstart/restart (.true.) integer :: jdat(1:8) !< current forecast date and time !< (yr, mon, day, t-zone, hr, min, sec, mil-sec) logical :: iccn !< using IN CCN forcing for MG2/3 @@ -866,6 +903,8 @@ module GFS_typedefs real (kind=kind_phys), pointer :: aer_nm (:,:,:) => null() !< GOCART aerosol climo !--- active when ((.not. newsas .or. cal_pre) .and. random_clds) + integer, pointer :: imap (:) => null() !< map of local index ix to global index i for this block + integer, pointer :: jmap (:) => null() !< map of local index ix to global index j for this block real (kind=kind_phys), pointer :: rann (:,:) => null() !< random number array (0-1) !--- In/Out @@ -881,24 +920,40 @@ module GFS_typedefs real (kind=kind_phys), pointer :: dsnow_cpl (:) => null() !< change in show_cpl (coupling_type) !--- phy_f*d variables needed for seamless restarts and moving data between grrad and gbphys - real (kind=kind_phys), pointer :: phy_fctd (:,:) => null() !< For CS convection + real (kind=kind_phys), pointer :: phy_fctd (:,:) => null() !< cloud base mass flux for CS convection real (kind=kind_phys), pointer :: phy_f2d (:,:) => null() !< 2d arrays saved for restart real (kind=kind_phys), pointer :: phy_f3d (:,:,:) => null() !< 3d arrays saved for restart - integer :: blkno !< for explicit data blocking: block number of this block - !--- radiation variables that need to be carried over from radiation to physics real (kind=kind_phys), pointer :: htlwc(:,:) => null() !< real (kind=kind_phys), pointer :: htlw0(:,:) => null() !< real (kind=kind_phys), pointer :: htswc(:,:) => null() !< real (kind=kind_phys), pointer :: htsw0(:,:) => null() !< + !--- dynamical forcing variables for Grell-Freitas convection real (kind=kind_phys), pointer :: forcet (:,:) => null() !< real (kind=kind_phys), pointer :: forceq (:,:) => null() !< real (kind=kind_phys), pointer :: prevst (:,:) => null() !< real (kind=kind_phys), pointer :: prevsq (:,:) => null() !< integer, pointer :: cactiv (:) => null() !< convective activity memory contour + !---- precipitation amounts from previous time step for RUC LSM + real (kind=kind_phys), pointer :: raincprv (:) => null() !< explicit rainfall from previous timestep + real (kind=kind_phys), pointer :: rainncprv (:) => null() !< convective_precipitation_amount from previous timestep + real (kind=kind_phys), pointer :: iceprv (:) => null() !< ice amount from previous timestep + real (kind=kind_phys), pointer :: snowprv (:) => null() !< snow amount from previous timestep + real (kind=kind_phys), pointer :: graupelprv(:) => null() !< graupel amount from previous timestep + + !--- MYNN prognostic variables that can't be in the Intdiag or Interstitial DDTs + real (kind=kind_phys), pointer :: CLDFRA_BL (:,:) => null() ! + real (kind=kind_phys), pointer :: QC_BL (:,:) => null() ! + real (kind=kind_phys), pointer :: el_pbl (:,:) => null() ! + real (kind=kind_phys), pointer :: Sh3D (:,:) => null() ! + real (kind=kind_phys), pointer :: qke (:,:) => null() ! + real (kind=kind_phys), pointer :: tsq (:,:) => null() ! + real (kind=kind_phys), pointer :: qsq (:,:) => null() ! + real (kind=kind_phys), pointer :: cov (:,:) => null() ! + contains procedure :: create => tbd_create !< allocate array data end type GFS_tbd_type @@ -971,7 +1026,7 @@ module GFS_typedefs type GFS_diag_type !! Input/Output only in radiation - real (kind=kind_phys), pointer :: fluxr (:,:) => null() !< to save time accumulated 2-d fields defined as:! + real (kind=kind_phys), pointer :: fluxr(:,:) => null() !< to save time accumulated 2-d fields defined as:! !< hardcoded field indices, opt. includes aerosols! type (topfsw_type), pointer :: topfsw(:) => null() !< sw radiation fluxes at toa, components: ! %upfxc - total sky upward sw flux at toa (w/m**2) @@ -1030,15 +1085,6 @@ module GFS_typedefs real (kind=kind_phys), pointer :: totgrpb(:) => null() !< accumulated graupel precipitation in bucket (kg/m2) !--- MYNN variables - real (kind=kind_phys), pointer :: CLDFRA_BL (:,:) => null() ! - real (kind=kind_phys), pointer :: QC_BL (:,:) => null() ! - real (kind=kind_phys), pointer :: el_pbl (:,:) => null() ! - real (kind=kind_phys), pointer :: Sh3D (:,:) => null() ! - real (kind=kind_phys), pointer :: qke (:,:) => null() ! - real (kind=kind_phys), pointer :: qke_adv (:,:) => null() ! - real (kind=kind_phys), pointer :: tsq (:,:) => null() ! - real (kind=kind_phys), pointer :: qsq (:,:) => null() ! - real (kind=kind_phys), pointer :: cov (:,:) => null() ! real (kind=kind_phys), pointer :: edmf_a (:,:) => null() ! real (kind=kind_phys), pointer :: edmf_w (:,:) => null() ! real (kind=kind_phys), pointer :: edmf_qt (:,:) => null() ! @@ -1048,6 +1094,8 @@ module GFS_typedefs real (kind=kind_phys), pointer :: maxMF (:) => null() ! integer, pointer :: nupdraft (:) => null() ! integer, pointer :: ktop_shallow (:) => null() ! + real (kind=kind_phys), pointer :: exch_h (:,:) => null() ! + real (kind=kind_phys), pointer :: exch_m (:,:) => null() ! ! Output - only in physics real (kind=kind_phys), pointer :: u10m (:) => null() !< 10 meter u/v wind speed @@ -1076,8 +1124,6 @@ module GFS_typedefs real (kind=kind_phys), pointer :: epi (:) => null() !< instantaneous sfc potential evaporation real (kind=kind_phys), pointer :: smcwlt2(:) => null() !< wilting point (volumetric) real (kind=kind_phys), pointer :: smcref2(:) => null() !< soil moisture threshold (volumetric) - real (kind=kind_phys), pointer :: wet1 (:) => null() !< normalized soil wetness - real (kind=kind_phys), pointer :: sr (:) => null() !< snow ratio : ratio of snow to total precipitation real (kind=kind_phys), pointer :: tdomr (:) => null() !< dominant accumulated rain type real (kind=kind_phys), pointer :: tdomzr (:) => null() !< dominant accumulated freezing rain type real (kind=kind_phys), pointer :: tdomip (:) => null() !< dominant accumulated sleet type @@ -1185,7 +1231,6 @@ module GFS_typedefs logical, pointer :: flag_cice(:) => null() !< logical, pointer :: flag_guess(:) => null() !< logical, pointer :: flag_iter(:) => null() !< - real (kind=kind_phys), pointer :: flag_frsoil(:) => null() !< real (kind=kind_phys), pointer :: fm10(:) => null() !< real (kind=kind_phys) :: frain !< real (kind=kind_phys), pointer :: frland(:) => null() !< @@ -1270,7 +1315,6 @@ module GFS_typedefs real (kind=kind_phys) :: rhcbot !< real (kind=kind_phys) :: rhcpbl !< real (kind=kind_phys) :: rhctop !< - real (kind=kind_phys), pointer :: rhofr(:) => null() !< real (kind=kind_phys), pointer :: runoff(:) => null() !< real (kind=kind_phys), pointer :: save_q(:,:,:) => null() !< real (kind=kind_phys), pointer :: save_t(:,:) => null() !< @@ -1516,9 +1560,11 @@ subroutine sfcprop_create (Sfcprop, IM, Model) allocate (Sfcprop%f10m (IM)) allocate (Sfcprop%tprcp (IM)) allocate (Sfcprop%srflag (IM)) + allocate (Sfcprop%sr (IM)) allocate (Sfcprop%slc (IM,Model%lsoil)) allocate (Sfcprop%smc (IM,Model%lsoil)) allocate (Sfcprop%stc (IM,Model%lsoil)) + allocate (Sfcprop%wet1 (IM)) Sfcprop%hice = clear_val Sfcprop%weasd = clear_val @@ -1529,9 +1575,11 @@ subroutine sfcprop_create (Sfcprop, IM, Model) Sfcprop%f10m = clear_val Sfcprop%tprcp = clear_val Sfcprop%srflag = clear_val + Sfcprop%sr = clear_val Sfcprop%slc = clear_val Sfcprop%smc = clear_val Sfcprop%stc = clear_val + Sfcprop%wet1 = clear_val !--- Out allocate (Sfcprop%t2m (IM)) @@ -1588,11 +1636,11 @@ subroutine sfcprop_create (Sfcprop, IM, Model) allocate (Sfcprop%keepsmfr (IM,Model%lsoil_lsm)) allocate (Sfcprop%smois (IM,Model%lsoil_lsm)) allocate (Sfcprop%tslb (IM,Model%lsoil_lsm)) + allocate (Sfcprop%flag_frsoil (IM,Model%lsoil_lsm)) allocate (Sfcprop%zs (Model%lsoil_lsm)) allocate (Sfcprop%clw_surf (IM)) allocate (Sfcprop%qwv_surf (IM)) allocate (Sfcprop%cndm_surf (IM)) - allocate (Sfcprop%flag_frsoil (IM,Model%lsoil_lsm)) allocate (Sfcprop%rhofr (IM)) allocate (Sfcprop%tsnow (IM)) ! @@ -1878,15 +1926,13 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & cnx, cny, gnx, gny, dt_dycore, & dt_phys, idat, jdat, tracer_names, & input_nml_file, ak, bk, blksz, & - communicator, ntasks) + restart, communicator, ntasks) !--- modules use physcons, only: con_rerth, con_pi use mersenne_twister, only: random_setseed, random_number - use module_ras, only: nrcmax use parse_tracers, only: get_tracer_index - use wam_f107_kp_mod, only: f107_kp_size, f107_kp_interval, & - f107_kp_skip_size, f107_kp_data_size + implicit none !--- interface variables @@ -1914,6 +1960,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & real(kind=kind_phys), dimension(:), intent(in) :: ak real(kind=kind_phys), dimension(:), intent(in) :: bk integer, intent(in) :: blksz(:) + logical, intent(in) :: restart integer, intent(in) :: communicator integer, intent(in) :: ntasks @@ -1997,22 +2044,22 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- M-G microphysical parameters integer :: fprcp = 0 !< no prognostic rain and snow (MG) integer :: pdfflag = 4 !< pdf flag for MG macro physics - real(kind=kind_phys) :: mg_dcs = 350.0 !< Morrison-Gettelman microphysics parameters - real(kind=kind_phys) :: mg_qcvar = 2.0 + real(kind=kind_phys) :: mg_dcs = 200.0 !< Morrison-Gettelman microphysics parameters + real(kind=kind_phys) :: mg_qcvar = 1.0 real(kind=kind_phys) :: mg_ts_auto_ice(2) = (/180.0,180.0/) !< ice auto conversion time scale real(kind=kind_phys) :: mg_rhmini = 1.01 !< relative humidity threshold parameter for nucleating ice real(kind=kind_phys) :: mg_ncnst = 100.e6 !< constant droplet num concentration (m-3) real(kind=kind_phys) :: mg_ninst = 0.15e6 !< constant ice num concentration (m-3) real(kind=kind_phys) :: mg_ngnst = 0.10e6 !< constant graupel/hail num concentration (m-3) = 0.1e6_r8 - real(kind=kind_phys) :: mg_berg_eff_factor = 2.0 !< berg efficiency factor real(kind=kind_phys) :: mg_alf = 1.0 !< tuning factor for alphs in MG macrophysics real(kind=kind_phys) :: mg_qcmin(2) = (/1.0d-9,1.0d-9/) !< min liquid and ice mixing ratio in Mg macro clouds + real(kind=kind_phys) :: mg_berg_eff_factor = 2.0 !< berg efficiency factor character(len=16) :: mg_precip_frac_method = 'max_overlap' !< type of precipitation fraction method real(kind=kind_phys) :: tf = 258.16 real(kind=kind_phys) :: tcr = 273.16 ! logical :: effr_in = .false. !< flag to use effective radii of cloud species in radiation - logical :: microp_uniform = .false. + logical :: microp_uniform = .true. logical :: do_cldliq = .true. logical :: do_cldice = .true. logical :: hetfrz_classnuc = .false. @@ -2029,6 +2076,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- Thompson microphysical parameters logical :: ltaerosol = .false. !< flag for aerosol version logical :: lradar = .false. !< flag for radar reflectivity + real(kind=kind_phys) :: ttendlim = -999.0 !< temperature tendency limiter, set to <0 to deactivate !--- GFDL microphysical parameters logical :: lgfdlmprad = .false. !< flag for GFDLMP radiation interaction @@ -2094,7 +2142,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & logical :: bl_mynn_tkeadvect = .false. integer :: bl_mynn_cloudpdf = 2 integer :: bl_mynn_mixlength = 2 - integer :: bl_mynn_edmf = 1 + integer :: bl_mynn_edmf = 0 integer :: bl_mynn_edmf_mom = 1 integer :: bl_mynn_edmf_tke = 0 integer :: bl_mynn_edmf_part = 0 @@ -2164,9 +2212,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- near surface temperature model logical :: nst_anl = .false. !< flag for NSSTM analysis in gcycle/sfcsub integer :: lsea = 0 - real(kind=kind_phys) :: xkzm_m = 1.0d0 !< [in] bkgd_vdif_m background vertical diffusion for momentum - real(kind=kind_phys) :: xkzm_h = 1.0d0 !< [in] bkgd_vdif_h background vertical diffusion for heat q - real(kind=kind_phys) :: xkzm_s = 1.0d0 !< [in] bkgd_vdif_s sigma threshold for background mom. diffusion integer :: nstf_name(5) = (/0,0,1,0,5/) !< flag 0 for no nst 1 for uncoupled nst and 2 for coupled NST !< nstf_name contains the NSSTM related parameters !< nstf_name(1) : 0 = NSSTM off, 1 = NSSTM on but uncoupled @@ -2175,6 +2220,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !< nstf_name(3) : 1 = NSSTM analysis on, 0 = NSSTM analysis off !< nstf_name(4) : zsea1 in mm !< nstf_name(5) : zsea2 in mm + real(kind=kind_phys) :: xkzm_m = 1.0d0 !< [in] bkgd_vdif_m background vertical diffusion for momentum + real(kind=kind_phys) :: xkzm_h = 1.0d0 !< [in] bkgd_vdif_h background vertical diffusion for heat q + real(kind=kind_phys) :: xkzm_s = 1.0d0 !< [in] bkgd_vdif_s sigma threshold for background mom. diffusion real(kind=kind_phys) :: xkzminv = 0.3 !< diffusivity in inversion layers real(kind=kind_phys) :: moninq_fac = 1.0 !< turbulence diffusion coefficient factor @@ -2226,7 +2274,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & mg_do_graupel, mg_do_hail, mg_nccons, mg_nicons, mg_ngcons, & mg_ncnst, mg_ninst, mg_ngnst, sed_supersat, do_sb_physics, & mg_alf, mg_qcmin, mg_do_ice_gmao, mg_do_liq_liu, & - ltaerosol, lradar, lgfdlmprad, & + ltaerosol, lradar, ttendlim, lgfdlmprad, & !--- land/surface model control lsm, lsoil, lsoil_lsm, nmtvr, ivegsrc, mom4ice, use_ufo, & !--- physical parameterizations @@ -2236,7 +2284,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & do_mynnedmf, do_mynnsfclay, & bl_mynn_cloudpdf, bl_mynn_edmf, bl_mynn_edmf_mom, & bl_mynn_edmf_tke, bl_mynn_edmf_part, bl_mynn_cloudmix, & - bl_mynn_mixqt, icloud_bl, & + bl_mynn_mixqt, icloud_bl, bl_mynn_tkeadvect, & h2o_phys, pdfcld, shcnvcw, redrag, hybedmf, satmedmf, & dspheat, cnvcld, & random_clds, shal_cnv, imfshalcnv, imfdeepcnv, do_deep, jcap,& @@ -2373,6 +2421,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & endif Model%iccn = iccn if (Model%aero_in) Model%iccn = .false. + ! further down: set Model%iccn to .false. + ! for all microphysics schemes except + ! MG2/3 (these are the only ones using ICCN) Model%iflip = iflip Model%isol = isol Model%ico2 = ico2 @@ -2401,6 +2452,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- microphysical switch Model%ncld = ncld Model%imp_physics = imp_physics + ! DH* + ! turn off ICCN interpolation when MG2/3 are not used + if (.not. Model%imp_physics==Model%imp_physics_mg) Model%iccn = .false. + ! *DH !--- Zhao-Carr MP parameters Model%psautco = psautco Model%prautco = prautco @@ -2436,9 +2491,12 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%tf = tf Model%tcr = tcr Model%tcrf = 1.0/(tcr-tf) + !--- Thompson MP parameters Model%ltaerosol = ltaerosol Model%lradar = lradar + Model%ttendlim = ttendlim + !--- gfdl MP parameters Model%lgfdlmprad = lgfdlmprad @@ -2517,6 +2575,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%bl_mynn_edmf_part = bl_mynn_edmf_part Model%bl_mynn_tkeadvect = bl_mynn_tkeadvect Model%grav_settling = grav_settling + Model%icloud_bl = icloud_bl !--- Rayleigh friction Model%prslrd0 = prslrd0 @@ -2581,6 +2640,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%ntracp1 = Model%ntrac + 1 allocate (Model%tracer_names(Model%ntrac)) Model%tracer_names(:) = tracer_names(:) + Model%ntqv = get_tracer_index(Model%tracer_names, 'vap_wat', Model%me, Model%master, Model%debug) Model%ntoz = get_tracer_index(Model%tracer_names, 'o3mr', Model%me, Model%master, Model%debug) Model%ntcw = get_tracer_index(Model%tracer_names, 'liq_wat', Model%me, Model%master, Model%debug) Model%ntiw = get_tracer_index(Model%tracer_names, 'ice_wat', Model%me, Model%master, Model%debug) @@ -2620,6 +2680,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%fhour = (rinc(4) + Model%dtp)/con_hr Model%zhour = mod(Model%phour,Model%fhzero) Model%kdt = 0 + Model%first_time_step = .true. + Model%restart = restart Model%jdat(1:8) = jdat(1:8) Model%sec = 0 allocate(Model%si(Model%levr+1)) @@ -2629,12 +2691,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- ak/bk have been flipped from their original FV3 orientation and are defined sfc -> toa Model%si = (ak + bk * p_ref - ak(Model%levr+1)) / (p_ref - ak(Model%levr+1)) - !--- stored in wam_f107_kp module - f107_kp_size = 56 - f107_kp_skip_size = 0 - f107_kp_data_size = 56 - f107_kp_interval = 10800 - !--- BEGIN CODE FROM GFS_PHYSICS_INITIALIZE !--- define physcons module variables tem = con_rerth*con_rerth*(con_pi+con_pi)*con_pi @@ -2647,12 +2703,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & ' rhc_max=',Model%rhcmax !--- set nrcm - - if (Model%ras) then - Model%nrcm = min(nrcmax, Model%levs-1) * (Model%dtp/1200.d0) + 0.10001d0 - else - Model%nrcm = 2 - endif + Model%nrcm = 2 !--- cal_pre if (Model%cal_pre) then @@ -2678,10 +2729,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & endif !--- mynn-edmf scheme - if (do_mynnedmf) then + if (Model%bl_mynn_edmf > 0) then Model%do_shoc = .false. - Model%shal_cnv = .false. - Model%imfshalcnv = -1 +! Model%shal_cnv = .false. +! Model%imfshalcnv = -1 Model%hybedmf = .false. Model%satmedmf = .false. if (Model%me == Model%master) print *,' MYNN-EDMF scheme is used for both', & @@ -2725,13 +2776,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & print *,' nstf_name(5)=',Model%nstf_name(5) endif if (Model%do_deep) then - ! Consistency check for GF convection: deep and shallow convection are bundled - ! and cannot be combined with any other deep or shallow convection scheme - if ( (Model%imfdeepcnv == 3 .or. Model%imfshalcnv == 3) .and. & - .not. (Model%imfdeepcnv == 3 .and. Model%imfshalcnv == 3) ) then - write(0,*) "Logic error: if GF deep convection is used, must also use GF shallow convection (and vice versa)" - stop - end if if (.not. Model%cscnv) then if (Model%ras) then print *,' RAS Convection scheme used with ccwf=',Model%ccwf @@ -2805,7 +2849,11 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & endif !--- set up cloud schemes and tracer elements - Model%ngreffr = 5 + Model%nleffr = -999 + Model%nieffr = -999 + Model%nreffr = -999 + Model%nseffr = -999 + Model%ngeffr = -999 if (Model%imp_physics == Model%imp_physics_zhao_carr) then Model%npdf3d = 0 Model%num_p3d = 4 @@ -2832,6 +2880,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%pdfcld = .false. Model%shcnvcw = .false. Model%ncnd = 5 + Model%nleffr = 1 + Model%nieffr = 2 + Model%nseffr = 3 if (Model%me == Model%master) print *,' Using wsm6 microphysics' elseif (Model%imp_physics == Model%imp_physics_thompson) then !Thompson microphysics @@ -2841,9 +2892,13 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%pdfcld = .false. Model%shcnvcw = .false. Model%ncnd = 5 + Model%nleffr = 1 + Model%nieffr = 2 + Model%nseffr = 3 if (Model%me == Model%master) print *,' Using Thompson double moment', & ' microphysics',' ltaerosol = ',Model%ltaerosol, & - ' lradar =',Model%lradar,Model%num_p3d,Model%num_p2d + ' lradar =',Model%lradar,' ttendlim =',Model%ttendlim, & + Model%num_p3d,Model%num_p2d else if (Model%imp_physics == Model%imp_physics_mg) then ! Morrison-Gettelman Microphysics Model%npdf3d = 0 @@ -2852,6 +2907,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%pdfcld = .false. Model%shcnvcw = .false. Model%ncnd = 2 + Model%nleffr = 2 + Model%nieffr = 3 + Model%nreffr = 4 + Model%nseffr = 5 if (abs(Model%fprcp) == 1) then Model%ncnd = 4 elseif (Model%fprcp >= 2) then @@ -2860,7 +2919,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%ncnd = 5 endif Model%num_p3d = 6 - Model%ngreffr = Model%num_p3d + Model%ngeffr = 6 endif if (Model%me == Model%master) & print *,' Using Morrison-Gettelman double moment microphysics', & @@ -2926,6 +2985,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & ' cnvcld=',Model%cnvcld,' ncnvcld3d=',Model%ncnvcld3d, & ' do_shoc=',Model%do_shoc,' nshoc3d=',Model%nshoc_3d, & ' nshoc_2d=',Model%nshoc_2d,' shoc_cld=',Model%shoc_cld,& + ' uni_cld=', Model%uni_cld, & ' ntot3d=',Model%ntot3d,' ntot2d=',Model%ntot2d, & ' shocaftcnv=',Model%shocaftcnv,' indcld=',Model%indcld,& ' shoc_parm=',Model%shoc_parm, & @@ -2943,6 +3003,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & !--- BEGIN CODE FROM GLOOPB !--- set up random number seed needed for RAS and old SAS and when cal_pre=.true. + ! Model%imfdeepcnv < 0 when Model%ras = .true. if (Model%imfdeepcnv <= 0 .or. Model%cal_pre) then if (Model%random_clds) then @@ -2998,7 +3059,7 @@ subroutine control_print(Model) print *, ' lonr : ', Model%lonr print *, ' latr : ', Model%latr print *, ' blksz(1) : ', Model%blksz(1) - print *, ' blksz(size(blksz)): ', Model%blksz(size(Model%blksz)) + print *, ' blksz(nblks) : ', Model%blksz(size(Model%blksz)) print *, ' ' print *, 'coupling parameters' print *, ' cplflx : ', Model%cplflx @@ -3062,6 +3123,7 @@ subroutine control_print(Model) print *, ' Thompson microphysical parameters' print *, ' ltaerosol : ', Model%ltaerosol print *, ' lradar : ', Model%lradar + print *, ' ttendlim : ', Model%ttendlim print *, ' ' endif if (Model%imp_physics == Model%imp_physics_mg) then @@ -3188,6 +3250,7 @@ subroutine control_print(Model) print *, 'tracers' print *, ' tracer_names : ', Model%tracer_names print *, ' ntrac : ', Model%ntrac + print *, ' ntqv : ', Model%ntqv print *, ' ntoz : ', Model%ntoz print *, ' ntcw : ', Model%ntcw print *, ' ntiw : ', Model%ntiw @@ -3239,6 +3302,8 @@ subroutine control_print(Model) print *, ' jdat : ', Model%jdat print *, ' sec : ', Model%sec print *, ' si : ', Model%si + print *, ' first_time_step : ', Model%first_time_step + print *, ' restart : ', Model%restart endif end subroutine control_print @@ -3312,13 +3377,12 @@ end subroutine grid_create !-------------------- ! GFS_tbd_type%create !-------------------- - subroutine tbd_create (Tbd, IM, BLKNO, Model) + subroutine tbd_create (Tbd, IM, Model) implicit none class(GFS_tbd_type) :: Tbd integer, intent(in) :: IM - integer, intent(in) :: BLKNO type(GFS_control_type), intent(in) :: Model !--- In @@ -3344,6 +3408,11 @@ subroutine tbd_create (Tbd, IM, BLKNO, Model) allocate (Tbd%aer_nm (IM,Model%levs,ntrcaer)) Tbd%aer_nm = clear_val + allocate (Tbd%imap (IM)) + allocate (Tbd%jmap (IM)) + Tbd%imap = 0 + Tbd%jmap = 0 + allocate (Tbd%rann (IM,Model%nrcm)) Tbd%rann = rann_init @@ -3380,8 +3449,6 @@ subroutine tbd_create (Tbd, IM, BLKNO, Model) ! if (Model%do_shoc) Tbd%phy_f3d(:,1,Model%ntot3d-1) = 3.0 ! if (Model%do_shoc) Tbd%phy_f3d(:,:,Model%ntot3d-1) = 1.0 - Tbd%blkno = BLKNO - allocate (Tbd%htlwc (IM,Model%levr+LTP)) allocate (Tbd%htlw0 (IM,Model%levr+LTP)) allocate (Tbd%htswc (IM,Model%levr+LTP)) @@ -3405,6 +3472,41 @@ subroutine tbd_create (Tbd, IM, BLKNO, Model) Tbd%cactiv = zero end if + if (Model%lsm == Model%lsm_ruc) then + allocate(Tbd%raincprv (IM)) + allocate(Tbd%rainncprv (IM)) + allocate(Tbd%iceprv (IM)) + allocate(Tbd%snowprv (IM)) + allocate(Tbd%graupelprv(IM)) + Tbd%raincprv = clear_val + Tbd%rainncprv = clear_val + Tbd%iceprv = clear_val + Tbd%snowprv = clear_val + Tbd%graupelprv = clear_val + end if + + !--- MYNN variables: + if (Model%do_mynnedmf) then + !print*,"Allocating all MYNN-EDMF variables:" + allocate (Tbd%cldfra_bl (IM,Model%levs)) + allocate (Tbd%qc_bl (IM,Model%levs)) + allocate (Tbd%el_pbl (IM,Model%levs)) + allocate (Tbd%sh3d (IM,Model%levs)) + allocate (Tbd%qke (IM,Model%levs)) + allocate (Tbd%tsq (IM,Model%levs)) + allocate (Tbd%qsq (IM,Model%levs)) + allocate (Tbd%cov (IM,Model%levs)) + !print*,"Allocating all MYNN-EDMF variables:" + Tbd%cldfra_bl = clear_val + Tbd%qc_bl = clear_val + Tbd%el_pbl = clear_val + Tbd%sh3d = clear_val + Tbd%qke = zero + Tbd%tsq = clear_val + Tbd%qsq = clear_val + Tbd%cov = clear_val + end if + end subroutine tbd_create @@ -3574,8 +3676,6 @@ subroutine diag_create (Diag, IM, Model) allocate (Diag%epi (IM)) allocate (Diag%smcwlt2 (IM)) allocate (Diag%smcref2 (IM)) - allocate (Diag%wet1 (IM)) - allocate (Diag%sr (IM)) allocate (Diag%tdomr (IM)) allocate (Diag%tdomzr (IM)) allocate (Diag%tdomip (IM)) @@ -3586,17 +3686,16 @@ subroutine diag_create (Diag, IM, Model) allocate (Diag%shum_wts(IM,Model%levs)) !--- 3D diagnostics allocate (Diag%zmtnblck(IM)) - if (Model%ldiag3d) then - allocate (Diag%du3dt (IM,Model%levs,4)) - allocate (Diag%dv3dt (IM,Model%levs,4)) - allocate (Diag%dt3dt (IM,Model%levs,6)) - allocate (Diag%dq3dt (IM,Model%levs,9)) - !--- needed to allocate GoCart coupling fields - allocate (Diag%upd_mf (IM,Model%levs)) - allocate (Diag%dwn_mf (IM,Model%levs)) - allocate (Diag%det_mf (IM,Model%levs)) - allocate (Diag%cldcov (IM,Model%levs)) - endif + allocate (Diag%du3dt (IM,Model%levs,4)) + allocate (Diag%dv3dt (IM,Model%levs,4)) + allocate (Diag%dt3dt (IM,Model%levs,6)) + allocate (Diag%dq3dt (IM,Model%levs,9)) + !--- needed to allocate GoCart coupling fields + allocate (Diag%upd_mf (IM,Model%levs)) + allocate (Diag%dwn_mf (IM,Model%levs)) + allocate (Diag%det_mf (IM,Model%levs)) + allocate (Diag%cldcov (IM,Model%levs)) + !--- 3D diagnostics for Thompson MP if(Model%lradar) then allocate (Diag%refl_10cm(IM,Model%levs)) @@ -3605,15 +3704,6 @@ subroutine diag_create (Diag, IM, Model) !--- MYNN variables: if (Model%do_mynnedmf) then print*,"Allocating all MYNN-EDMF variables:" - allocate (Diag%cldfra_bl (IM,Model%levs)) - allocate (Diag%qc_bl (IM,Model%levs)) - allocate (Diag%el_pbl (IM,Model%levs)) - allocate (Diag%sh3d (IM,Model%levs)) - allocate (Diag%qke (IM,Model%levs)) - allocate (Diag%qke_adv (IM,Model%levs)) - allocate (Diag%tsq (IM,Model%levs)) - allocate (Diag%qsq (IM,Model%levs)) - allocate (Diag%cov (IM,Model%levs)) allocate (Diag%edmf_a (IM,Model%levs)) allocate (Diag%edmf_w (IM,Model%levs)) allocate (Diag%edmf_qt (IM,Model%levs)) @@ -3623,16 +3713,9 @@ subroutine diag_create (Diag, IM, Model) allocate (Diag%nupdraft (IM)) allocate (Diag%maxmf (IM)) allocate (Diag%ktop_shallow(IM)) + allocate (Diag%exch_h (IM,Model%levs)) + allocate (Diag%exch_m (IM,Model%levs)) print*,"Initializing all MYNN-EDMF variables with ",clear_val - Diag%cldfra_bl = clear_val - Diag%qc_bl = clear_val - Diag%el_pbl = clear_val - Diag%sh3d = clear_val - Diag%qke = zero - Diag%qke_adv = clear_val - Diag%tsq = clear_val - Diag%qsq = clear_val - Diag%cov = clear_val Diag%edmf_a = clear_val Diag%edmf_w = clear_val Diag%edmf_qt = clear_val @@ -3642,6 +3725,8 @@ subroutine diag_create (Diag, IM, Model) Diag%nupdraft = 0 Diag%maxmf = clear_val Diag%ktop_shallow = 0 + Diag%exch_h = clear_val + Diag%exch_m = clear_val endif call Diag%rad_zero (Model) @@ -3744,8 +3829,6 @@ subroutine diag_phys_zero (Diag, Model, linit) Diag%epi = zero Diag%smcwlt2 = zero Diag%smcref2 = zero - Diag%wet1 = zero - Diag%sr = zero Diag%tdomr = zero Diag%tdomzr = zero Diag%tdomip = zero @@ -3754,6 +3837,7 @@ subroutine diag_phys_zero (Diag, Model, linit) Diag%skebv_wts = zero Diag%sppt_wts = zero Diag%shum_wts = zero + Diag%zmtnblck = zero Diag%totprcpb = zero Diag%cnvprcpb = zero Diag%toticeb = zero @@ -3978,7 +4062,7 @@ subroutine interstitial_create (Interstitial, IM, Model) end if ! Set components that do not change Interstitial%h2o_coeff = h2o_coeff - Interstitial%im = IM + Interstitial%im = IM Interstitial%ipr = min(IM,10) Interstitial%ix = IM Interstitial%latidxprnt = 1 diff --git a/scm/src/gmtb_scm.F90 b/scm/src/gmtb_scm.F90 index d6f5f0c5..cee8e5d9 100644 --- a/scm/src/gmtb_scm.F90 +++ b/scm/src/gmtb_scm.F90 @@ -22,7 +22,9 @@ subroutine gmtb_scm_main_sub() ccpp_physics_init, & ccpp_physics_run, & ccpp_physics_finalize, & - ccpp_field_add + ccpp_field_add, & + ccpp_initialized, & + ccpp_error use :: iso_c_binding, only: c_loc @@ -110,6 +112,9 @@ subroutine gmtb_scm_main_sub() stop end if + cdata(i)%blk_no = 1 + cdata(i)%thrd_no = 1 + physics%Init_parm(i)%levs = scm_state%n_levels physics%Init_parm(i)%bdat(1) = scm_state%init_year physics%Init_parm(i)%bdat(2) = scm_state%init_month @@ -131,7 +136,8 @@ subroutine gmtb_scm_main_sub() call GFS_suite_setup(physics%Model(i), physics%Statein(i), physics%Stateout(i), & physics%Sfcprop(i), physics%Coupling(i), physics%Grid(i), & physics%Tbd(i), physics%Cldprop(i), physics%Radtend(i), & - physics%Diag(i), physics%Interstitial(i), 1, 1, physics%Init_parm(i),& + physics%Diag(i), physics%Interstitial(i), 1, 1, .false., & + physics%Init_parm(i), & physics%n_ozone_lats, physics%n_ozone_layers, physics%n_ozone_times, & physics%n_ozone_coefficients, physics%ozone_lat, physics%ozone_pres, & physics%ozone_time, physics%ozone_forcing_in, & @@ -153,6 +159,7 @@ subroutine gmtb_scm_main_sub() stop end if + physics%Model(i)%first_time_step = .true. end do call output_append(scm_state, physics) @@ -252,6 +259,8 @@ subroutine gmtb_scm_main_sub() physics%Model(j)%jdat = jdat end do + physics%Model(i)%first_time_step = .false. + !> - Save previously unfiltered state as temporary for use in the time filter. if(scm_state%time_scheme == 2) then scm_state%temp_tracer = scm_state%state_tracer diff --git a/scm/src/gmtb_scm_setup.f90 b/scm/src/gmtb_scm_setup.f90 index f77956f2..5a590780 100644 --- a/scm/src/gmtb_scm_setup.f90 +++ b/scm/src/gmtb_scm_setup.f90 @@ -217,7 +217,8 @@ end subroutine patch_in_ref !-------------- subroutine GFS_suite_setup (Model, Statein, Stateout, Sfcprop, & Coupling, Grid, Tbd, Cldprop, Radtend, Diag, & - Interstitial, communicator, ntasks, Init_parm, & + Interstitial, communicator, ntasks, restart, & + Init_parm, & n_ozone_lats, n_ozone_layers, n_ozone_times, & n_ozone_coefficients, & ozone_lat_in, ozone_pres_in, ozone_time_in, & @@ -257,6 +258,7 @@ subroutine GFS_suite_setup (Model, Statein, Stateout, Sfcprop, integer, intent(in) :: communicator integer, intent(in) :: ntasks + logical, intent(in) :: restart integer, intent(in) :: n_ozone_lats, n_ozone_layers, n_ozone_coefficients, n_ozone_times real(kind=kind_phys), intent(in) :: ozone_lat_in(:), ozone_pres_in(:), ozone_time_in(:), ozone_forcing_in(:,:,:,:) @@ -275,8 +277,8 @@ subroutine GFS_suite_setup (Model, Statein, Stateout, Sfcprop, Init_parm%bdat, Init_parm%cdat, & Init_parm%tracer_names, & Init_parm%input_nml_file, Init_parm%ak, & - Init_parm%bk, Init_parm%blksz, communicator, & - ntasks) + Init_parm%bk, Init_parm%blksz, restart, & + communicator, ntasks) ! DH* TODO: clean up this part, the allocation and assignment ! of ozone and h2o data does not belong here !*DH @@ -329,7 +331,7 @@ subroutine GFS_suite_setup (Model, Statein, Stateout, Sfcprop, call Sfcprop%create(1, Model) call Coupling%create(1, Model) call Grid%create(1, Model) - call Tbd%create(1, 1, Model) + call Tbd%create(1, Model) call Cldprop%create(1, Model) call Radtend%create(1, Model) !--- internal representation of diagnostics diff --git a/scm/src/gmtb_scm_type_defs.f90 b/scm/src/gmtb_scm_type_defs.f90 index 57cf2ecc..7217c87f 100644 --- a/scm/src/gmtb_scm_type_defs.f90 +++ b/scm/src/gmtb_scm_type_defs.f90 @@ -6,7 +6,7 @@ module gmtb_scm_type_defs use gmtb_scm_kinds, only : sp, dp, qp use GFS_typedefs, only: GFS_control_type, GFS_statein_type, GFS_stateout_type, GFS_sfcprop_type, GFS_coupling_type, & GFS_grid_type, GFS_tbd_type, GFS_cldprop_type, GFS_radtend_type, GFS_diag_type, GFS_interstitial_type, & - GFS_init_type, LTP + GFS_init_type use machine, only: kind_phys implicit none @@ -20,13 +20,7 @@ module gmtb_scm_type_defs character(len = character_length) :: clear_char = '' -#if 0 -!> \section arg_table_gmtb_scm_type_defs -!! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | -!! |----------------------------------------------------------|---------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|---------------|------|-----------------------|-----------|--------|----------| -!! | LTP | extra_top_layer | extra top layer for radiation | none | 0 | integer | | none | F | -!! -#endif + type scm_state_type @@ -179,23 +173,23 @@ module gmtb_scm_type_defs !> \section arg_table_physics_type !! | local_name | standard_name | long_name | units | rank | type | kind | intent | optional | !! |----------------------------------------------------------|---------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|---------------|------|-----------------------|-----------|--------|----------| -!! | physics%Model(i) | FV3-GFS_Control_type | derived type GFS_control_type in FV3 | DDT | 0 | GFS_control_type | | none | F | -!! | physics%Cldprop(i) | FV3-GFS_Cldprop_type | derived type GFS_cldprop_type in FV3 | DDT | 0 | GFS_cldprop_type | | none | F | -!! | physics%Coupling(i) | FV3-GFS_Coupling_type | derived type GFS_coupling_type in FV3 | DDT | 0 | GFS_coupling_type | | none | F | -!! | physics%Diag(i) | FV3-GFS_Diag_type | derived type GFS_diag_type in FV3 | DDT | 0 | GFS_diag_type | | none | F | -!! | physics%Grid(i) | FV3-GFS_Grid_type | derived type GFS_grid_type in FV3 | DDT | 0 | GFS_grid_type | | none | F | -!! | physics%Radtend(i) | FV3-GFS_Radtend_type | derived type GFS_radtend_type in FV3 | DDT | 0 | GFS_radtend_type | | none | F | -!! | physics%Sfcprop(i) | FV3-GFS_Sfcprop_type | derived type GFS_sfcprop_type in FV3 | DDT | 0 | GFS_sfcprop_type | | none | F | -!! | physics%Statein(i) | FV3-GFS_Statein_type | derived type GFS_statein_type in FV3 | DDT | 0 | GFS_statein_type | | none | F | -!! | physics%Stateout(i) | FV3-GFS_Stateout_type | derived type GFS_stateout_type in FV3 | DDT | 0 | GFS_stateout_type | | none | F | -!! | physics%Tbd(i) | FV3-GFS_Tbd_type | derived type GFS_tbd_type in FV3 | DDT | 0 | GFS_tbd_type | | none | F | -!! | physics%Interstitial(i) | FV3-GFS_Interstitial_type | derived type GFS_interstitial_type in FV3 | DDT | 0 | GFS_interstitial_type | | none | F | -!! | physics%Statein(:) | FV3-GFS_Statein_type_all_blocks | derived type GFS_statein_type in FV3 | DDT | 1 | GFS_statein_type | | none | F | -!! | physics%Grid(:) | FV3-GFS_Grid_type_all_blocks | derived type GFS_grid_type in FV3 | DDT | 1 | GFS_grid_type | | none | F | -!! | physics%Tbd(:) | FV3-GFS_Tbd_type_all_blocks | derived type GFS_tbd_type in FV3 | DDT | 1 | GFS_tbd_type | | none | F | -!! | physics%Sfcprop(:) | FV3-GFS_Sfcprop_type_all_blocks | derived type GFS_sfcprop_type in FV3 | DDT | 1 | GFS_sfcprop_type | | none | F | -!! | physics%Cldprop(:) | FV3-GFS_Cldprop_type_all_blocks | derived type GFS_cldprop_type in FV3 | DDT | 1 | GFS_cldprop_type | | none | F | -!! | physics%Diag(:) | FV3-GFS_Diag_type_all_blocks | derived type GFS_diag_type in FV3 | DDT | 1 | GFS_diag_type | | none | F | +!! | physics%Model(i) | GFS_control_type_instance | instance of derived type GFS_control_type | DDT | 0 | GFS_control_type | | none | F | +!! | physics%Cldprop(i) | GFS_cldprop_type_instance | instance of derived type GFS_cldprop_type | DDT | 0 | GFS_cldprop_type | | none | F | +!! | physics%Coupling(i) | GFS_coupling_type_instance | instance of derived type GFS_coupling_type | DDT | 0 | GFS_coupling_type | | none | F | +!! | physics%Diag(i) | GFS_diag_type_instance | instance of derived type GFS_diag_type | DDT | 0 | GFS_diag_type | | none | F | +!! | physics%Grid(i) | GFS_grid_type_instance | instance of derived type GFS_grid_type | DDT | 0 | GFS_grid_type | | none | F | +!! | physics%Radtend(i) | GFS_radtend_type_instance | instance of derived type GFS_radtend_type | DDT | 0 | GFS_radtend_type | | none | F | +!! | physics%Sfcprop(i) | GFS_sfcprop_type_instance | instance of derived type GFS_sfcprop_type | DDT | 0 | GFS_sfcprop_type | | none | F | +!! | physics%Statein(i) | GFS_statein_type_instance | instance of derived type GFS_statein_type | DDT | 0 | GFS_statein_type | | none | F | +!! | physics%Stateout(i) | GFS_stateout_type_instance | instance of derived type GFS_stateout_type | DDT | 0 | GFS_stateout_type | | none | F | +!! | physics%Tbd(i) | GFS_tbd_type_instance | instance of derived type GFS_tbd_type | DDT | 0 | GFS_tbd_type | | none | F | +!! | physics%Interstitial(i) | GFS_interstitial_type_instance | instance of derived type GFS_interstitial_type | DDT | 0 | GFS_interstitial_type | | none | F | +!! | physics%Statein(:) | GFS_statein_type_instance_all_blocks | instance of derived type GFS_statein_type | DDT | 1 | GFS_statein_type | | none | F | +!! | physics%Grid(:) | GFS_grid_type_instance_all_blocks | instance of derived type GFS_grid_type | DDT | 1 | GFS_grid_type | | none | F | +!! | physics%Tbd(:) | GFS_tbd_type_instance_all_blocks | instance of derived type GFS_tbd_type | DDT | 1 | GFS_tbd_type | | none | F | +!! | physics%Sfcprop(:) | GFS_sfcprop_type_instance_all_blocks | instance of derived type GFS_sfcprop_type | DDT | 1 | GFS_sfcprop_type | | none | F | +!! | physics%Cldprop(:) | GFS_cldprop_type_instance_all_blocks | instance of derived type GFS_cldprop_type | DDT | 1 | GFS_cldprop_type | | none | F | +!! | physics%Diag(:) | GFS_diag_type_instance_all_blocks | instance of derived type GFS_diag_type | DDT | 1 | GFS_diag_type | | none | F | !! | physics%Interstitial(i)%adjnirbmd | surface_downwelling_direct_near_infrared_shortwave_flux | surface downwelling beam near-infrared shortwave flux at current time | W m-2 | 1 | real | kind_phys | none | F | !! | physics%Interstitial(i)%adjnirbmu | surface_upwelling_direct_near_infrared_shortwave_flux | surface upwelling beam near-infrared shortwave flux at current time | W m-2 | 1 | real | kind_phys | none | F | !! | physics%Interstitial(i)%adjnirdfd | surface_downwelling_diffuse_near_infrared_shortwave_flux | surface downwelling diffuse near-infrared shortwave flux at current time | W m-2 | 1 | real | kind_phys | none | F | @@ -249,7 +243,7 @@ module gmtb_scm_type_defs !! | physics%Interstitial(i)%dkt | atmosphere_heat_diffusivity | diffusivity for heat | m2 s-1 | 2 | real | kind_phys | none | F | !! | physics%Interstitial(i)%dlength | characteristic_grid_length_scale | representative horizontal length scale of grid box | m | 1 | real | kind_phys | none | F | !! | physics%Interstitial(i)%dqdt | tendency_of_tracers_due_to_model_physics | updated tendency of the tracers | kg kg-1 s-1 | 3 | real | kind_phys | none | F | -!! | physics%Interstitial(i)%dqdt(:,:,1) | tendency_of_water_vapor_specific_humidity_due_to_model_physics | water vapor specific humidity tendency due to model physics | kg kg-1 s-1 | 2 | real | kind_phys | none | F | +!! | physics%Interstitial(i)%dqdt(:,:,physics%Model(i)%ntqv) | tendency_of_water_vapor_specific_humidity_due_to_model_physics | water vapor specific humidity tendency due to model physics | kg kg-1 s-1 | 2 | real | kind_phys | none | F | !! | physics%Interstitial(i)%dqdt(:,:,physics%Model(i)%ntcw) | tendency_of_liquid_cloud_water_mixing_ratio_due_to_model_physics | cloud condensed water mixing ratio tendency due to model physics | kg kg-1 s-1 | 2 | real | kind_phys | none | F | !! | physics%Interstitial(i)%dqdt(:,:,physics%Model(i)%ntiw) | tendency_of_ice_cloud_water_mixing_ratio_due_to_model_physics | cloud condensed water mixing ratio tendency due to model physics | kg kg-1 s-1 | 2 | real | kind_phys | none | F | !! | physics%Interstitial(i)%dqdt(:,:,physics%Model(i)%ntoz) | tendency_of_ozone_mixing_ratio_due_to_model_physics | ozone mixing ratio tendency due to model physics | kg kg-1 s-1 | 2 | real | kind_phys | none | F | @@ -621,6 +615,7 @@ module gmtb_scm_type_defs !! | physics%Model(i)%ncnd | number_of_cloud_condensate_types | number of cloud condensate types | count | 0 | integer | | none | F | !! | physics%Model(i)%ltaerosol | flag_for_aerosol_physics | flag for aerosol physics | flag | 0 | logical | | none | F | !! | physics%Model(i)%lradar | flag_for_radar_reflectivity | flag for radar reflectivity | flag | 0 | logical | | none | F | +!! | physics%Model(i)%ttendlim | limit_for_temperature_tendency_for_microphysics | temperature tendency limiter per physics time step | K s-1 | 0 | real | kind_phys | none | F | !! | physics%Model(i)%lgfdlmprad | | flag for GFDL mp scheme and radiation consistency | | 0 | logical | | none | F | !! | physics%Model(i)%lsm | flag_for_land_surface_scheme | flag for land surface model lsm=1 for noah lsm | flag | 0 | integer | | none | F | !! | physics%Model(i)%lsm_noah | flag_for_noah_land_surface_scheme | flag for NOAH land surface model | flag | 0 | integer | | none | F | @@ -732,6 +727,7 @@ module gmtb_scm_type_defs !! | physics%Model(i)%tracer_names | | array of initialized tracers from dynamic core | | 1 | character | | none | F | !! | physics%Model(i)%ntrac | number_of_tracers | number of tracers | count | 0 | integer | | none | F | !! | physics%Model(i)%ntracp1 | number_of_tracers_plus_one | number of tracers plus one | count | 0 | integer | | none | F | +!! | physics%Model(i)%ntqv | index_for_water_vapor | tracer index for water vapor (specific humidity) | index | 0 | integer | | none | F | !! | physics%Model(i)%ntoz | index_for_ozone | tracer index for ozone mixing ratio | index | 0 | integer | | none | F | !! | physics%Model(i)%ntcw | index_for_liquid_cloud_condensate | tracer index for cloud condensate (or liquid water) | index | 0 | integer | | none | F | !! | physics%Model(i)%ntiw | index_for_ice_cloud_condensate | tracer index for ice water | index | 0 | integer | | none | F | @@ -747,8 +743,8 @@ module gmtb_scm_type_defs !! | physics%Model(i)%ntke | index_for_turbulent_kinetic_energy | tracer index for turbulent kinetic energy | index | 0 | integer | | none | F | !! | physics%Model(i)%nto | | tracer index for oxygen ion | | 0 | integer | | none | F | !! | physics%Model(i)%nto2 | | tracer index for oxygen | | 0 | integer | | none | F | -!! | physics%Model(i)%ntwa | | tracer index for water friendly aerosol | | 0 | integer | | none | F | -!! | physics%Model(i)%ntia | | tracer index for ice friendly aerosol | | 0 | integer | | none | F | +!! | physics%Model(i)%ntwa | index_for_water_friendly_aerosols | tracer index for water friendly aerosol | index | 0 | integer | | none | F | +!! | physics%Model(i)%ntia | index_for_ice_friendly_aerosols | tracer index for ice friendly aerosol | index | 0 | integer | | none | F | !! | physics%Model(i)%ntot2d | | total number of variables for phyf2d | | 0 | integer | | none | F | !! | physics%Model(i)%ntot3d | | total number of variables for phyf3d | | 0 | integer | | none | F | !! | physics%Model(i)%indcld | index_for_cloud_fraction_in_3d_arrays_for_microphysics | index of cloud fraction in phyf3d (used only for SHOC or MG) | index | 0 | integer | | none | F | @@ -761,7 +757,11 @@ module gmtb_scm_type_defs !! | physics%Model(i)%nctp | number_of_cloud_types_CS | number of cloud types in Chikira-Sugiyama scheme | count | 0 | integer | | none | F | !! | physics%Model(i)%ncnvw | | the index of cnvw in phy_f3d | | 0 | integer | | none | F | !! | physics%Model(i)%ncnvc | | the index of cnvc in phy_f3d | | 0 | integer | | none | F | -!! | physics%Model(i)%ngreffr | index_for_graupel_effective_radius | the index of graupel effective radius in phy_f3d | | 0 | integer | | none | F | +!! | physics%Model(i)%nleffr | index_for_cloud_liquid_water_effective_radius | the index of cloud liquid water effective radius in phy_f3d | | 0 | integer | | none | F | +!! | physics%Model(i)%nieffr | index_for_ice_effective_radius | the index of ice effective radius in phy_f3d | | 0 | integer | | none | F | +!! | physics%Model(i)%nreffr | index_for_rain_effective_radius | the index of rain effective radius in phy_f3d | | 0 | integer | | none | F | +!! | physics%Model(i)%nseffr | index_for_snow_effective_radius | the index of snow effective radius in phy_f3d | | 0 | integer | | none | F | +!! | physics%Model(i)%ngeffr | index_for_graupel_effective_radius | the index of graupel effective radius in phy_f3d | | 0 | integer | | none | F | !! | physics%Model(i)%debug | | debug flag | | 0 | logical | | none | F | !! | physics%Model(i)%pre_rad | | flag for testing purpose | | 0 | logical | | none | F | !! | physics%Model(i)%ipt | | index for diagnostic printout point | | 0 | integer | | none | F | @@ -778,6 +778,8 @@ module gmtb_scm_type_defs !! | physics%Model(i)%fhour | forecast_time | curent forecast time | h | 0 | real | kind_phys | none | F | !! | physics%Model(i)%zhour | | previous hour diagnostic buckets emptied | h | 0 | real | kind_phys | none | F | !! | physics%Model(i)%kdt | index_of_time_step | current forecast iteration | index | 0 | integer | | none | F | +!! | physics%Model(i)%first_time_step | flag_for_first_time_step | flag for first time step for time integration loop (cold/warmstart) | flag | 0 | logical | | none | F | +!! | physics%Model(i)%restart | flag_for_restart | flag for restart (warmstart) or coldstart | flag | 0 | logical | | none | F | !! | physics%Model(i)%jdat | forecast_date_and_time | current forecast date and time | none | 1 | integer | | none | F | !! | physics%Model(i)%iccn | flag_for_in_ccn_forcing_for_morrison_gettelman_microphysics | flag for IN and CCN forcing for morrison gettelman microphysics | flag | 0 | logical | | none | F | !! | physics%Model(i)%sec | seconds_elapsed_since_model_initialization | seconds elapsed since model initialization | s | 0 | real | kind_phys | none | F | @@ -810,6 +812,8 @@ module gmtb_scm_type_defs !! | physics%Tbd(i)%in_nm | in_number_concentration | IN number concentration | kg-1? | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%ccn_nm | ccn_number_concentration | CCN number concentration | kg-1? | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%aer_nm | aerosol_number_concentration_from_gocart_aerosol_climatology | GOCART aerosol climatology number concentration | kg-1? | 3 | real | kind_phys | none | F | +!! | physics%Tbd(i)%imap | map_of_block_column_number_to_global_i_index | map of local index ix to global index i for this block | none | 1 | integer | | none | F | +!! | physics%Tbd(i)%jmap | map_of_block_column_number_to_global_j_index | map of local index ix to global index j for this block | none | 1 | integer | | none | F | !! | physics%Tbd(i)%rann | random_number_array | random number array (0-1) | none | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%acv | accumulated_lwe_thickness_of_convective_precipitation_amount_cnvc90 | accumulated convective rainfall amount for cnvc90 only | m | 1 | real | kind_phys | none | F | !! | physics%Tbd(i)%acvb | smallest_cloud_base_vertical_index_encountered_thus_far | smallest cloud base vertical index encountered thus far | index | 1 | real | kind_phys | none | F | @@ -828,19 +832,18 @@ module gmtb_scm_type_defs !! | physics%Tbd(i)%phy_f3d(:,:,1) | air_temperature_two_time_steps_back | air temperature two time steps back | K | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%phy_f3d(:,:,1) | cloud_fraction_for_MG | cloud fraction used by Morrison-Gettelman MP | frac | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%phy_f3d(:,:,2) | water_vapor_specific_humidity_two_time_steps_back | water vapor specific humidity two time steps back | kg kg-1 | 2 | real | kind_phys | none | F | -!! | physics%Tbd(i)%phy_f3d(:,:,2) | effective_radius_of_stratiform_cloud_liquid_water_particle_in_um | effective radius of cloud liquid water particle in micrometer | um | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%phy_f3d(:,:,3) | air_temperature_at_previous_time_step | air temperature at previous time step | K | 2 | real | kind_phys | none | F | -!! | physics%Tbd(i)%phy_f3d(:,:,3) | effective_radius_of_stratiform_cloud_ice_particle_in_um | effective radius of cloud ice water particle in micrometers | um | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%phy_f3d(:,:,4) | water_vapor_specific_humidity_at_previous_time_step | water vapor specific humidity at previous time step | kg kg-1 | 2 | real | kind_phys | none | F | -!! | physics%Tbd(i)%phy_f3d(:,:,4) | effective_radius_of_stratiform_cloud_rain_particle_in_um | effective radius of cloud rain particle in micrometers | um | 2 | real | kind_phys | none | F | -!! | physics%Tbd(i)%phy_f3d(:,:,5) | effective_radius_of_stratiform_cloud_snow_particle_in_um | effective radius of cloud snow particle in micrometers | um | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%phy_f3d(:,:,physics%Model(i)%ncnvw) | convective_cloud_water_mixing_ratio_in_phy_f3d | convective cloud water mixing ratio in the phy_f3d array | kg kg-1 | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%phy_f3d(:,:,physics%Model(i)%ncnvc) | convective_cloud_cover_in_phy_f3d | convective cloud cover in the phy_f3d array | frac | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%phy_f3d(:,:,physics%Model(i)%ntot3d) | kinematic_buoyancy_flux_from_shoc | upward kinematic buoyancy flux from the SHOC scheme | K m s-1 | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%phy_f3d(:,:,physics%Model(i)%ntot3d-1) | atmosphere_heat_diffusivity_from_shoc | diffusivity for heat from the SHOC scheme | m2 s-1 | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%phy_f3d(:,:,physics%Model(i)%ntot3d-2) | subgrid_scale_cloud_fraction_from_shoc | subgrid-scale cloud fraction from the SHOC scheme | frac | 2 | real | kind_phys | none | F | -!! | physics%Tbd(i)%phy_f3d(:,:,physics%Model(i)%ngreffr) | effective_radius_of_stratiform_cloud_graupel_particle_in_um | effective radius of cloud graupel particle in micrometers | um | 2 | real | kind_phys | none | F | -!! | physics%Tbd(i)%blkno | block_number | for explicit data blocking: block number of this block | index | 0 | integer | | none | F | +!! | physics%Tbd(i)%phy_f3d(:,:,physics%Model(i)%nleffr) | effective_radius_of_stratiform_cloud_liquid_water_particle_in_um | eff. radius of cloud liquid water particle in micrometer | um | 2 | real | kind_phys | none | F | +!! | physics%Tbd(i)%phy_f3d(:,:,physics%Model(i)%nieffr) | effective_radius_of_stratiform_cloud_ice_particle_in_um | eff. radius of cloud ice water particle in micrometer | um | 2 | real | kind_phys | none | F | +!! | physics%Tbd(i)%phy_f3d(:,:,physics%Model(i)%nreffr) | effective_radius_of_stratiform_cloud_rain_particle_in_um | effective radius of cloud rain particle in micrometers | um | 2 | real | kind_phys | none | F | +!! | physics%Tbd(i)%phy_f3d(:,:,physics%Model(i)%nseffr) | effective_radius_of_stratiform_cloud_snow_particle_in_um | effective radius of cloud snow particle in micrometers | um | 2 | real | kind_phys | none | F | +!! | physics%Tbd(i)%phy_f3d(:,:,physics%Model(i)%ngeffr) | effective_radius_of_stratiform_cloud_graupel_particle_in_um | eff. radius of cloud graupel particle in micrometer | um | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%htlwc | tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step | total sky heating rate due to longwave radiation | K s-1 | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%htlw0 | tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step | clear sky heating rate due to longwave radiation | K s-1 | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%htswc | tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_time_step | total sky heating rate due to shortwave radiation | K s-1 | 2 | real | kind_phys | none | F | @@ -850,6 +853,19 @@ module gmtb_scm_type_defs !! | physics%Tbd(i)%prevst | temperature_from_previous_timestep | temperature from previous time step | K | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%prevsq | moisture_from_previous_timestep | moisture from previous time step | kg kg-1 | 2 | real | kind_phys | none | F | !! | physics%Tbd(i)%cactiv | conv_activity_counter | convective activity memory | none | 1 | integer | | none | F | +!! | physics%Tbd(i)%raincprv | lwe_thickness_of_explicit_rainfall_amount_from_previous_timestep | explicit rainfall from previous timestep | m | 1 | real | kind_phys | none | F | +!! | physics%Tbd(i)%rainncprv | lwe_thickness_of_convective_precipitation_amount_from_previous_timestep | convective_precipitation_amount from previous timestep | m | 1 | real | kind_phys | none | F | +!! | physics%Tbd(i)%iceprv | lwe_thickness_of_ice_amount_from_previous_timestep | ice amount from previous timestep | m | 1 | real | kind_phys | none | F | +!! | physics%Tbd(i)%snowprv | lwe_thickness_of_snow_amount_from_previous_timestep | snow amount from previous timestep | m | 1 | real | kind_phys | none | F | +!! | physics%Tbd(i)%graupelprv | lwe_thickness_of_graupel_amount_from_previous_timestep | graupel amount from previous timestep | m | 1 | real | kind_phys | none | F | +!! | physics%Tbd(i)%CLDFRA_BL | subgrid_cloud_fraction_pbl | subgrid cloud fraction from PBL scheme | frac | 2 | real | kind_phys | none | F | +!! | physics%Tbd(i)%QC_BL | subgrid_cloud_mixing_ratio_pbl | subgrid cloud cloud mixing ratio from PBL scheme | kg kg-1 | 2 | real | kind_phys | none | F | +!! | physics%Tbd(i)%el_pbl | mixing_length | mixing length in meters | m | 2 | real | kind_phys | none | F | +!! | physics%Tbd(i)%Sh3D | stability_function_for_heat | stability function for heat | none | 2 | real | kind_phys | none | F | +!! | physics%Tbd(i)%qke | tke_at_mass_points | 2 x tke at mass points | m2 s-2 | 2 | real | kind_phys | none | F | +!! | physics%Tbd(i)%tsq | t_prime_squared | temperature fluctuation squared | K2 | 2 | real | kind_phys | none | F | +!! | physics%Tbd(i)%qsq | q_prime_squared | water vapor fluctuation squared | kg2 kg-2 | 2 | real | kind_phys | none | F | +!! | physics%Tbd(i)%cov | t_prime_q_prime | covariance of temperature and moisture | K kg kg-1 | 2 | real | kind_phys | none | F | !! | physics%Radtend(i)%sfcfsw | sw_fluxes_sfc | sw radiation fluxes at sfc | W m-2 | 1 | sfcfsw_type | | none | F | !! | physics%Radtend(i)%sfcflw | lw_fluxes_sfc | lw radiation fluxes at sfc | W m-2 | 1 | sfcflw_type | | none | F | !! | physics%Radtend(i)%htrsw | tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep | total sky sw heating rate | K s-1 | 2 | real | kind_phys | none | F | @@ -935,8 +951,6 @@ module gmtb_scm_type_defs !! | physics%Diag(i)%epi | instantaneous_surface_potential_evaporation | instantaneous sfc potential evaporation | W m-2 | 1 | real | kind_phys | none | F | !! | physics%Diag(i)%smcwlt2 | volume_fraction_of_condensed_water_in_soil_at_wilting_point | wilting point (volumetric) | frac | 1 | real | kind_phys | none | F | !! | physics%Diag(i)%smcref2 | threshold_volume_fraction_of_condensed_water_in_soil | soil moisture threshold (volumetric) | frac | 1 | real | kind_phys | none | F | -!! | physics%Diag(i)%wet1 | normalized_soil_wetness | normalized soil wetness | frac | 1 | real | kind_phys | none | F | -!! | physics%Diag(i)%sr | ratio_of_snowfall_to_rainfall | snow ratio: ratio of snow to total precipitation | frac | 1 | real | kind_phys | none | F | !! | physics%Diag(i)%tdomr | dominant_rain_type | dominant rain type | none | 1 | real | kind_phys | none | F | !! | physics%Diag(i)%tdomzr | dominant_freezing_rain_type | dominant freezing rain type | none | 1 | real | kind_phys | none | F | !! | physics%Diag(i)%tdomip | dominant_sleet_type | dominant sleet type | none | 1 | real | kind_phys | none | F | @@ -980,15 +994,6 @@ module gmtb_scm_type_defs !! | physics%Diag(i)%det_mf | cumulative_atmosphere_detrainment_convective_mass_flux | cumulative detrainment mass flux | Pa | 2 | real | kind_phys | none | F | !! | physics%Diag(i)%cldcov | | instantaneous 3D cloud fraction | | 2 | real | kind_phys | none | F | !! | physics%Diag(i)%refl_10cm | radar_reflectivity_10cm | instantaneous refl_10cm | dBZ | 2 | real | kind_phys | none | F | -!! | physics%Diag(i)%CLDFRA_BL | subgrid_cloud_fraction_pbl | subgrid cloud fraction from PBL scheme | frac | 2 | real | kind_phys | none | F | -!! | physics%Diag(i)%QC_BL | subgrid_cloud_mixing_ratio_pbl | subgrid cloud cloud mixing ratio from PBL scheme | kg kg-1 | 2 | real | kind_phys | none | F | -!! | physics%Diag(i)%el_pbl | mixing_length | mixing length in meters | m | 2 | real | kind_phys | none | F | -!! | physics%Diag(i)%Sh3D | stability_function_for_heat | stability function for heat | none | 2 | real | kind_phys | none | F | -!! | physics%Diag(i)%qke | tke_at_mass_points | 2 x tke at mass points | m2 s-2 | 2 | real | kind_phys | none | F | -!! | physics%Diag(i)%qke_adv | tke_at_mass_points_advected | 2 x tke at mass points advected | m2 s-2 | 2 | real | kind_phys | none | F | -!! | physics%Diag(i)%tsq | t_prime_squared | temperature fluctuation squared | K2 | 2 | real | kind_phys | none | F | -!! | physics%Diag(i)%qsq | q_prime_squared | water vapor fluctuation squared | kg2 kg-2 | 2 | real | kind_phys | none | F | -!! | physics%Diag(i)%cov | t_prime_q_prime | covariance of temperature and moisture | K kg kg-1 | 2 | real | kind_phys | none | F | !! | physics%Diag(i)%edmf_a | emdf_updraft_area | updraft area from mass flux scheme | frac | 2 | real | kind_phys | none | F | !! | physics%Diag(i)%edmf_w | emdf_updraft_vertical_velocity | updraft vertical velocity from mass flux scheme | m s-1 | 2 | real | kind_phys | none | F | !! | physics%Diag(i)%edmf_qt | emdf_updraft_total_water | updraft total water from mass flux scheme | kg kg-1 | 2 | real | kind_phys | none | F | @@ -998,6 +1003,8 @@ module gmtb_scm_type_defs !! | physics%Diag(i)%nupdraft | number_of_plumes | number of plumes per grid column | count | 1 | integer | | none | F | !! | physics%Diag(i)%maxMF | maximum_mass_flux | maximum mass flux within a column | m s-1 | 1 | real | kind_phys | none | F | !! | physics%Diag(i)%ktop_shallow | k_level_of_highest_reaching_plume | k-level of highest reaching plume | count | 1 | integer | | none | F | +!! | physics%Diag(i)%exch_h | atmosphere_heat_diffusivity_for_mynnpbl | diffusivity for heat for MYNN PBL (defined for all mass levels) | m2 s-1 | 2 | real | kind_phys | none | F | +!! | physics%Diag(i)%exch_m | atmosphere_momentum_diffusivity_for_mynnpbl | diffusivity for momentum for MYNN PBL (defined for all mass levels) | m2 s-1 | 2 | real | kind_phys | none | F | !! | physics%Sfcprop(i)%slmsk | sea_land_ice_mask_real | landmask: sea/land/ice=0/1/2 | flag | 1 | real | kind_phys | none | F | !! | physics%Sfcprop(i)%lakemsk | lake_mask_real | lake mask: non-lake/lake=0/1 | flag | 1 | real | kind_phys | none | F | !! | physics%Sfcprop(i)%tsfc | surface_skin_temperature | surface skin temperature | K | 1 | real | kind_phys | none | F | @@ -1036,9 +1043,11 @@ module gmtb_scm_type_defs !! | physics%Sfcprop(i)%f10m | ratio_of_wind_at_lowest_model_layer_and_wind_at_10m | ratio of sigma level 1 wind and 10m wind | ratio | 1 | real | kind_phys | none | F | !! | physics%Sfcprop(i)%tprcp | nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep | total precipitation amount in each time step | m | 1 | real | kind_phys | none | F | !! | physics%Sfcprop(i)%srflag | flag_for_precipitation_type | snow/rain flag for precipitation | flag | 1 | real | kind_phys | none | F | +!! | physics%Sfcprop(i)%sr | ratio_of_snowfall_to_rainfall | snow ratio: ratio of snow to total precipitation | frac | 1 | real | kind_phys | none | F | !! | physics%Sfcprop(i)%slc | volume_fraction_of_unfrozen_soil_moisture | liquid soil moisture | frac | 2 | real | kind_phys | none | F | !! | physics%Sfcprop(i)%smc | volume_fraction_of_soil_moisture | total soil moisture | frac | 2 | real | kind_phys | none | F | !! | physics%Sfcprop(i)%stc | soil_temperature | soil temperature | K | 2 | real | kind_phys | none | F | +!! | physics%Sfcprop(i)%wet1 | normalized_soil_wetness | normalized soil wetness | frac | 1 | real | kind_phys | none | F | !! | physics%Sfcprop(i)%t2m | temperature_at_2m | 2 meter temperature | K | 1 | real | kind_phys | none | F | !! | physics%Sfcprop(i)%th2m | potential_temperature_at_2m | 2 meter potential temperature | K | 1 | real | kind_phys | none | F | !! | physics%Sfcprop(i)%q2m | specific_humidity_at_2m | 2 meter specific humidity | kg kg-1 | 1 | real | kind_phys | none | F | From 31f4bbdda8e9afa788f2b0dbd1418286f05220e6 Mon Sep 17 00:00:00 2001 From: "Grant.Firl" Date: Mon, 25 Feb 2019 14:54:18 -0700 Subject: [PATCH 3/5] forgot to add changes to ccpp_prebuild_config.py --- ccpp/config/ccpp_prebuild_config.py | 52 +++++++++++++++++------------ ccpp/physics | 2 +- 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py index b72bcc46..6ecca807 100755 --- a/ccpp/config/ccpp_prebuild_config.py +++ b/ccpp/config/ccpp_prebuild_config.py @@ -12,6 +12,8 @@ # Add all files with metadata tables on the host model side, # relative to basedir = top-level directory of host model VARIABLE_DEFINITION_FILES = [ + 'ccpp/physics/physics/machine.F', + 'scm/src/GFS_typedefs.F90', 'scm/src/gmtb_scm_type_defs.f90', 'scm/src/gmtb_scm_physical_constants.f90' ] @@ -53,6 +55,7 @@ 'ccpp/physics/physics/namelist_soilveg.f', 'ccpp/physics/physics/mfpblt.f', 'ccpp/physics/physics/mfscu.f', + 'ccpp/physics/physics/num_parthds.F', 'ccpp/physics/physics/ozinterp.f90', 'ccpp/physics/physics/ozne_def.f', 'ccpp/physics/physics/physcons.F90', @@ -68,6 +71,7 @@ 'ccpp/physics/physics/radsw_datatb.f', 'ccpp/physics/physics/radsw_param.f', 'ccpp/physics/physics/rascnvv2.f', + 'ccpp/physics/physics/sfcsub.F', 'ccpp/physics/physics/set_soilveg.f', 'ccpp/physics/physics/sflx.f', 'ccpp/physics/physics/surface_perturbation.F90', @@ -146,6 +150,7 @@ 'ccpp/physics/physics/sfc_drv.f' : ['physics'], 'ccpp/physics/physics/sfc_drv_ruc.F90' : ['physics'], 'ccpp/physics/physics/sfc_nst.f' : ['physics'], + 'ccpp/physics/physics/sfc_ocean.F' : ['physics'], 'ccpp/physics/physics/sfc_sice.f' : ['physics'], 'ccpp/physics/physics/gmtb_scm_sfc_flux_spec.F90' : ['physics'], } @@ -239,6 +244,9 @@ MODULE_INCLUDE_FILE = 'ccpp_modules.inc' FIELDS_INCLUDE_FILE = 'ccpp_fields.inc' +# Directory where to write static API to +STATIC_API_DIR = 'scm/src/' + # HTML document containing the model-defined CCPP variables HTML_VARTABLE_FILE = 'ccpp/physics/CCPP_VARIABLES_SCM.html' @@ -254,25 +262,25 @@ # in the case of SCM, this is a vector with loop index i CCPP_DATA_STRUCTURE = 'cdata(i)' -# Modules to load for auto-generated ccpp_field_add code -# in the host model cap (e.g. error handling) -MODULE_USE_TEMPLATE_HOST_CAP = \ -''' -use ccpp_errors, only: ccpp_error -''' - -# Modules to load for auto-generated ccpp_field_get code -# in the physics scheme cap (e.g. derived data types) -MODULE_USE_TEMPLATE_SCHEME_CAP = \ -''' - use machine, only: kind_phys - use module_radlw_parameters, only: sfcflw_type, topflw_type - use module_radsw_parameters, only: cmpfsw_type, sfcfsw_type, topfsw_type - use GFS_typedefs, only: GFS_statein_type, GFS_stateout_type, & - GFS_sfcprop_type, & - GFS_coupling_type, GFS_control_type, & - GFS_grid_type, GFS_tbd_type, & - GFS_cldprop_type, GFS_radtend_type, & - GFS_diag_type, GFS_interstitial_type,& - GFS_init_type -''' +# # Modules to load for auto-generated ccpp_field_add code +# # in the host model cap (e.g. error handling) +# MODULE_USE_TEMPLATE_HOST_CAP = \ +# ''' +# use ccpp_errors, only: ccpp_error +# ''' +# +# # Modules to load for auto-generated ccpp_field_get code +# # in the physics scheme cap (e.g. derived data types) +# MODULE_USE_TEMPLATE_SCHEME_CAP = \ +# ''' +# use machine, only: kind_phys +# use module_radlw_parameters, only: sfcflw_type, topflw_type +# use module_radsw_parameters, only: cmpfsw_type, sfcfsw_type, topfsw_type +# use GFS_typedefs, only: GFS_statein_type, GFS_stateout_type, & +# GFS_sfcprop_type, & +# GFS_coupling_type, GFS_control_type, & +# GFS_grid_type, GFS_tbd_type, & +# GFS_cldprop_type, GFS_radtend_type, & +# GFS_diag_type, GFS_interstitial_type,& +# GFS_init_type +# ''' diff --git a/ccpp/physics b/ccpp/physics index 4fca8c2a..207e4c95 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 4fca8c2af53a9192538aa1137bc423a43c35d90e +Subproject commit 207e4c952d9907f6cf754589f554b2bbea61ca39 From 86802cc1027800840500efc3d662901405f04d3d Mon Sep 17 00:00:00 2001 From: "Grant.Firl" Date: Tue, 5 Mar 2019 14:53:41 -0700 Subject: [PATCH 4/5] fixed bug for setting Model%first_time_step; included CCN_ACTIVATE.BIN for Thompson MP --- scm/data/GFS_physics_data/CCN_ACTIVATE.BIN | Bin 0 -> 35288 bytes scm/src/gmtb_scm.F90 | 6 ++++-- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 scm/data/GFS_physics_data/CCN_ACTIVATE.BIN diff --git a/scm/data/GFS_physics_data/CCN_ACTIVATE.BIN b/scm/data/GFS_physics_data/CCN_ACTIVATE.BIN new file mode 100644 index 0000000000000000000000000000000000000000..9026e073ef0e701939c75ca4a22390a77425b3a5 GIT binary patch literal 35288 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 Tow%ODek$Lk`E%zUdG>z+)|tMw literal 0 HcmV?d00001 diff --git a/scm/src/gmtb_scm.F90 b/scm/src/gmtb_scm.F90 index cee8e5d9..c63e85e8 100644 --- a/scm/src/gmtb_scm.F90 +++ b/scm/src/gmtb_scm.F90 @@ -246,6 +246,10 @@ subroutine gmtb_scm_main_sub() scm_state%dt_now = scm_state%dt + do i=1, scm_state%n_cols + physics%Model(i)%first_time_step = .false. + end do + do i = 2, scm_state%n_timesteps scm_state%itt = i !> - Calculate the elapsed model time. @@ -259,8 +263,6 @@ subroutine gmtb_scm_main_sub() physics%Model(j)%jdat = jdat end do - physics%Model(i)%first_time_step = .false. - !> - Save previously unfiltered state as temporary for use in the time filter. if(scm_state%time_scheme == 2) then scm_state%temp_tracer = scm_state%state_tracer From 2cc2c88612a8476b45cdd392cc93fb61fff38481 Mon Sep 17 00:00:00 2001 From: "Grant.Firl" Date: Fri, 8 Mar 2019 12:22:35 -0700 Subject: [PATCH 5/5] updated GFS_typedefs and gmtb_scm_type_defs for updates to OU/CAPS schemes; added SDFs corresponding to 'suite2' of the advanced physics test; added case configuration and namelists for suite2, added plot_config for suites 1,2,3 comparison --- ccpp/framework | 2 +- ccpp/physics | 2 +- ccpp/suites/suite_SCM_GFS_suite2.xml | 84 ++++++++++++++++ ...uite_SCM_GFS_suite2_prescribed_surface.xml | 68 +++++++++++++ .../input_namelists/input_fv3_suite2.nml | 97 +++++++++++++++++++ scm/etc/case_config/twpice_suite2.nml | 31 ++++++ .../plot_configs/ccpp_test_physics_test.ini | 50 ++++++++++ scm/src/GFS_typedefs.F90 | 14 ++- scm/src/gmtb_scm_type_defs.f90 | 4 +- 9 files changed, 346 insertions(+), 6 deletions(-) create mode 100644 ccpp/suites/suite_SCM_GFS_suite2.xml create mode 100644 ccpp/suites/suite_SCM_GFS_suite2_prescribed_surface.xml create mode 100644 scm/etc/case_config/input_namelists/input_fv3_suite2.nml create mode 100644 scm/etc/case_config/twpice_suite2.nml create mode 100644 scm/etc/scripts/plot_configs/ccpp_test_physics_test.ini diff --git a/ccpp/framework b/ccpp/framework index 1c42b090..ec6498f5 160000 --- a/ccpp/framework +++ b/ccpp/framework @@ -1 +1 @@ -Subproject commit 1c42b090a45f0063c563c7843d5501dcd92fdf2d +Subproject commit ec6498f5bbd2f0c3bdfff27514ef391445f59af8 diff --git a/ccpp/physics b/ccpp/physics index 207e4c95..be813c9e 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 207e4c952d9907f6cf754589f554b2bbea61ca39 +Subproject commit be813c9e6aa2ce7d0cad66dd1bd9794b5e7cc1d8 diff --git a/ccpp/suites/suite_SCM_GFS_suite2.xml b/ccpp/suites/suite_SCM_GFS_suite2.xml new file mode 100644 index 00000000..f1b5aa63 --- /dev/null +++ b/ccpp/suites/suite_SCM_GFS_suite2.xml @@ -0,0 +1,84 @@ + + + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + dcyc2t3 + GFS_surface_generic_pre + GFS_suite_interstitial_2 + + + + sfc_ex_coef + GFS_surface_loop_control_part1 + sfc_nst_pre + sfc_nst + sfc_nst_post + lsm_noah + sfc_sice + GFS_surface_loop_control_part2 + + + + dcyc2t3_post + sfc_diag + sfc_diag_post + GFS_surface_generic_post + GFS_PBL_generic_pre + satmedmfvdif + GFS_PBL_generic_post + gwdps_pre + gwdps + gwdps_post + rayleigh_damp + GFS_suite_stateout_update + ozphys_2015 + + GFS_DCNV_generic_pre + get_phi_fv3 + GFS_suite_interstitial_3 + samfdeepcnv + GFS_DCNV_generic_post + gwdc_pre + gwdc + gwdc_post + GFS_SCNV_generic_pre + samfshalcnv + samfshalcnv_post + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + gfdl_cloud_microphys + GFS_MP_generic_post + sfc_sice_post + + + + diff --git a/ccpp/suites/suite_SCM_GFS_suite2_prescribed_surface.xml b/ccpp/suites/suite_SCM_GFS_suite2_prescribed_surface.xml new file mode 100644 index 00000000..38dbea59 --- /dev/null +++ b/ccpp/suites/suite_SCM_GFS_suite2_prescribed_surface.xml @@ -0,0 +1,68 @@ + + + + + + + GFS_time_vary_pre + GFS_rrtmg_setup + GFS_rad_time_vary + GFS_phys_time_vary + + + + + GFS_suite_interstitial_rad_reset + GFS_rrtmg_pre + rrtmg_sw_pre + rrtmg_sw + rrtmg_sw_post + rrtmg_lw_pre + rrtmg_lw + rrtmg_lw_post + GFS_rrtmg_post + + + + + GFS_suite_interstitial_phys_reset + GFS_suite_stateout_reset + get_prs_fv3 + GFS_suite_interstitial_1 + dcyc2t3 + GFS_suite_interstitial_2 + GFS_surface_generic_pre + gmtb_scm_sfc_flux_spec + dcyc2t3_post + GFS_PBL_generic_pre + satmedmfvdif + GFS_PBL_generic_post + gwdps_pre + gwdps + gwdps_post + rayleigh_damp + GFS_suite_stateout_update + ozphys_2015 + + GFS_DCNV_generic_pre + get_phi_fv3 + GFS_suite_interstitial_3 + samfdeepcnv + GFS_DCNV_generic_post + gwdc_pre + gwdc + gwdc_post + GFS_SCNV_generic_pre + samfshalcnv + samfshalcnv_post + GFS_SCNV_generic_post + GFS_suite_interstitial_4 + cnvc90 + GFS_MP_generic_pre + gfdl_cloud_microphys + GFS_MP_generic_post + sfc_sice_post + + + + diff --git a/scm/etc/case_config/input_namelists/input_fv3_suite2.nml b/scm/etc/case_config/input_namelists/input_fv3_suite2.nml new file mode 100644 index 00000000..3af66867 --- /dev/null +++ b/scm/etc/case_config/input_namelists/input_fv3_suite2.nml @@ -0,0 +1,97 @@ +&gfs_physics_nml + fhzero = 6. + ldiag3d = .true. + fhcyc = 24. + nst_anl = .true. + use_ufo = .true. + pre_rad = .false. + ncld = 5 + imp_physics = 11 + pdfcld = .false. + fhswr = 3600. + fhlwr = 3600. + ialb = 1 + iems = 1 + IAER = 111 + 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. + random_clds = .false. + trans_trac = .false. + cnvcld = .true. + imfshalcnv = 2 + imfdeepcnv = 2 + cdmbgwd = 3.5,0.25 + prslrd0 = 0. + ivegsrc = 1 + isot = 1 + debug = .false. + nstf_name = 2,1,1,0,5 + xkzminv = 0.3 + xkzm_m = 1.0 + xkzm_h = 1.0 + do_sppt = .false. + do_shum = .false. + do_skeb = .false. + 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 = 300. + 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. +/ diff --git a/scm/etc/case_config/twpice_suite2.nml b/scm/etc/case_config/twpice_suite2.nml new file mode 100644 index 00000000..4e279b2a --- /dev/null +++ b/scm/etc/case_config/twpice_suite2.nml @@ -0,0 +1,31 @@ +$case_config +model_name = 'FV3', +n_columns = 1, +case_name = 'twpice', +dt = 600.0, +time_scheme = 1, +runtime = 2138400, +output_frequency = 600.0, +n_levels = 64, +output_dir = 'output_twpice_suite2', +output_file = 'output', +case_data_dir = '../data/processed_case_input', +vert_coord_data_dir = '../data/vert_coord_data', +thermo_forcing_type = 2, +mom_forcing_type = 3, +relax_time = 7200.0, +sfc_flux_spec = .false., +sfc_type = 0, +reference_profile_choice = 1, +year = 2006, +month = 1, +day = 19, +hour = 3, +$end + +$physics_config +physics_suite = 'suite_SCM_GFS_suite2', +physics_suite_dir = '../../ccpp/suites/', +physics_nml = '../etc/case_config/input_namelists/input_fv3_suite2.nml', +column_area = 2.0E9, +$end diff --git a/scm/etc/scripts/plot_configs/ccpp_test_physics_test.ini b/scm/etc/scripts/plot_configs/ccpp_test_physics_test.ini new file mode 100644 index 00000000..b59b7379 --- /dev/null +++ b/scm/etc/scripts/plot_configs/ccpp_test_physics_test.ini @@ -0,0 +1,50 @@ +gmtb_scm_datasets = ../../bin/output_twpice_gfdlmp/output.nc, ../../bin/output_twpice_suite2/output.nc, ../../bin/output_twpice_cpt/output.nc +gmtb_scm_datasets_labels = S1, S2, S3 +plot_dir = ../../bin/plots_S1_S2_S3/ +obs_file = ../../data/raw_case_input/twp180iopsndgvarana_v2.1_C3.c1.20060117.000000.cdf +obs_compare = True +plot_ind_datasets = True +time_series_resample = True + +[time_slices] + [[active]] + start = 2006, 1, 20, 0 + end = 2006, 1, 25, 12 + [[suppressed]] + start = 2006, 1, 28, 0 + end = 2006, 2, 2, 12 + +[time_snapshots] + +[plots] + [[profiles_mean]] + vars = qc, qv, T + vars_labels = 'qc', 'qv', 'T' + vert_axis = pres_l + vert_axis_label = 'p (Pa)' + y_inverted = True + y_log = False + y_min_option = min #min, max, val (if val, add y_min = float value) + y_max_option = max #min, max, val (if val, add y_max = float value) + + [[profiles_mean_multi]] + + [[profiles_instant]] + + [[time_series]] + vars = 'pres_s','lhf','shf' + vars_labels = 'surface pressure','lhf','shf' + + [[contours]] + vars = qv, + vars_labels = 'qv', + vert_axis = pres_l + vert_axis_label = 'p (Pa)' + y_inverted = True + y_log = False + y_min_option = val #min, max, val (if val, add y_min = float value) + y_min = 10000.0 + y_max_option = val #min, max, val (if val, add y_max = float value) + y_max = 100000.0 + x_ticks_num = 10 + y_ticks_num = 10 diff --git a/scm/src/GFS_typedefs.F90 b/scm/src/GFS_typedefs.F90 index 977e5b55..2f9a5fed 100644 --- a/scm/src/GFS_typedefs.F90 +++ b/scm/src/GFS_typedefs.F90 @@ -628,6 +628,8 @@ module GFS_typedefs logical :: hybedmf !< flag for hybrid edmf pbl scheme logical :: satmedmf !< flag for scale-aware TKE-based moist edmf !< vertical turbulent mixing scheme + logical :: shinhong !< flag for scale-aware Shinhong vertical turbulent mixing scheme + logical :: do_ysu !< flag for YSU turbulent mixing scheme logical :: dspheat !< flag for tke dissipative heating logical :: cnvcld logical :: random_clds !< flag controls whether clouds are random @@ -1908,7 +1910,7 @@ subroutine coupling_create (Coupling, IM, Model) endif !--- needed for Thompson's aerosol option - if(Model%imp_physics == Model%imp_physics_thompson .and. Model%ltaerosol) then + if(Model%imp_physics == Model%imp_physics_thompson) then allocate (Coupling%nwfa2d (IM)) allocate (Coupling%nifa2d (IM)) Coupling%nwfa2d = clear_val @@ -2119,6 +2121,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & logical :: hybedmf = .false. !< flag for hybrid edmf pbl scheme logical :: satmedmf = .false. !< flag for scale-aware TKE-based moist edmf !< vertical turbulent mixing scheme + logical :: shinhong = .false. !< flag for scale-aware Shinhong vertical turbulent mixing scheme + logical :: do_ysu = .false. !< flag for YSU vertical turbulent mixing scheme logical :: dspheat = .false. !< flag for tke dissipative heating logical :: cnvcld = .false. logical :: random_clds = .false. !< flag controls whether clouds are random @@ -2286,7 +2290,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & bl_mynn_edmf_tke, bl_mynn_edmf_part, bl_mynn_cloudmix, & bl_mynn_mixqt, icloud_bl, bl_mynn_tkeadvect, & h2o_phys, pdfcld, shcnvcw, redrag, hybedmf, satmedmf, & - dspheat, cnvcld, & + shinhong, do_ysu, dspheat, cnvcld, & random_clds, shal_cnv, imfshalcnv, imfdeepcnv, do_deep, jcap,& cs_parm, flgmin, cgwf, ccwf, cdmbgwd, sup, ctei_rm, crtrh, & dlqf, rbcr, shoc_parm, psauras, prauras, wminras, & @@ -2541,6 +2545,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, & Model%redrag = redrag Model%hybedmf = hybedmf Model%satmedmf = satmedmf + Model%shinhong = shinhong + Model%do_ysu = do_ysu Model%dspheat = dspheat Model%cnvcld = cnvcld Model%random_clds = random_clds @@ -3180,6 +3186,8 @@ subroutine control_print(Model) print *, ' redrag : ', Model%redrag print *, ' hybedmf : ', Model%hybedmf print *, ' satmedmf : ', Model%satmedmf + print *, ' shinhong : ', Model%shinhong + print *, ' do_ysu : ', Model%do_ysu print *, ' dspheat : ', Model%dspheat print *, ' cnvcld : ', Model%cnvcld print *, ' random_clds : ', Model%random_clds @@ -4144,7 +4152,7 @@ subroutine interstitial_setup_tracers(Interstitial, Model) endif if (Interstitial%nvdiff == Model%ntrac) then - Interstitial%ntiwx = -999 + Interstitial%ntiwx = Model%ntiw else if (Model%imp_physics == Model%imp_physics_wsm6) then Interstitial%ntiwx = 3 diff --git a/scm/src/gmtb_scm_type_defs.f90 b/scm/src/gmtb_scm_type_defs.f90 index 7217c87f..c00f4c1d 100644 --- a/scm/src/gmtb_scm_type_defs.f90 +++ b/scm/src/gmtb_scm_type_defs.f90 @@ -344,7 +344,7 @@ module gmtb_scm_type_defs !! | physics%Interstitial(i)%ncpl | local_condesed_water_number_concentration | number concentration of condensed water local to physics | kg-1 | 2 | real | kind_phys | none | F | !! | physics%Interstitial(i)%ncpr | local_rain_number_concentration | number concentration of rain local to physics | kg-1 | 2 | real | kind_phys | none | F | !! | physics%Interstitial(i)%ncps | local_snow_number_concentration | number concentration of snow local to physics | kg-1 | 2 | real | kind_phys | none | F | -!! | physics%Interstitial(i)%ntiwx | index_for_ntiwx_dh_todo_find_better_name | index for ntiwx DH* todo find better name | index | 0 | integer | | none | F | +!! | physics%Interstitial(i)%ntiwx | index_for_ice_cloud_condensate_vertical_diffusion_tracer | index for ice cloud condensate n the vertically diffused tracer array | index | 0 | integer | | none | F | !! | physics%Interstitial(i)%ncstrac | number_of_tracers_for_CS | number of convectively transported tracers in Chikira-Sugiyama deep conv. scheme | count | 0 | integer | | none | F | !! | physics%Interstitial(i)%nday | daytime_points_dimension | daytime points dimension | count | 0 | integer | | none | F | !! | physics%Interstitial(i)%nn | number_of_tracers_for_convective_transport | number of tracers for convective transport | count | 0 | integer | | none | F | @@ -635,6 +635,8 @@ module gmtb_scm_type_defs !! | physics%Model(i)%moist_adj | | flag for moist convective adjustment | | 0 | logical | | none | F | !! | physics%Model(i)%cscnv | flag_for_Chikira_Sugiyama_deep_convection | flag for Chikira-Sugiyama convection | flag | 0 | logical | | none | F | !! | physics%Model(i)%satmedmf | flag_for_scale_aware_TKE_moist_EDMF_PBL | flag for scale-aware TKE moist EDMF PBL scheme | flag | 0 | logical | | none | F | +!! | physics%Model(i)%shinhong | flag_for_scale_aware_Shinhong_PBL | flag for scale-aware Shinhong PBL scheme | flag | 0 | logical | | none | F | +!! | physics%Model(i)%do_ysu | flag_for_ysu | flag for YSU PBL scheme | flag | 0 | logical | | none | F | !! | physics%Model(i)%cal_pre | flag_for_precipitation_type_algorithm | flag controls precip type algorithm | flag | 0 | logical | | none | F | !! | physics%Model(i)%do_aw | flag_for_Arakawa_Wu_adjustment | flag for Arakawa Wu scale-aware adjustment | flag | 0 | logical | | none | F | !! | physics%Model(i)%do_awdd | flag_arakawa_wu_downdraft | AW scale-aware option in cs convection downdraft | flag | 0 | logical | | none | F |