diff --git a/compsets/all_ccpp.input b/compsets/all_ccpp.input new file mode 100644 index 00000000..a68652d7 --- /dev/null +++ b/compsets/all_ccpp.input @@ -0,0 +1,46 @@ +load 'fv3mom6cice5_ccpp.input' + +######################################################################## +#Run the standard Regression tests + +run cpld_fv3_ccpp_mom6_cice_cold_atm_flux @ fv3, coupledapp, cold +run cpld_fv3_ccpp_384_mom6_cice_cold_atm_flux @ fv3, coupledapp, cold384 + +run cpld_fv3_ccpp_mom6_cice_2d_atm_flux @ fv3, coupledapp, warm +run cpld_fv3_ccpp_384_mom6_cice_2d_atm_flux @ fv3, coupledapp, warm384 + +######################################################################## +#Run the Benchmark-like inputs for a single date +#These can be run separately from the baseline test cases +#above by commenting those 4 tests out. The user must then +#first run the benchmark cold start alone. The location of +#cold start mediator files is then used to run the warm start. +#The full path to the cold start mediator files is specified as +#MED_restart_data in benchmark_warm.input. + +#load 'benchmark_cold.input' +#load 'benchmark_warm.input' + +#run cpld_fv3_384_mom6_cice_cold_bmark @ benchmark, coldBM2 +#run cpld_fv3_384_mom6_cice_2d_bmark @ benchmark, warmBM2 + +######################################################################## +#Run the Benchmark-like inputs for 4 standard dates +#These can be run separately from the baseline test cases +#above by commenting those 4 tests out. The user must then +#first run the 4 cold starts alone. The location of +#cold start mediator files is then used to run the warm starts. The +#full path to the cold start mediator files is specified as ROOTDIR +#in the datesuite_warm.input. + +#load 'datesuite_cold.input' +#run cpld_fv3_384_mom6_cice_cold_2012010100 @ benchmark, coldBM2 +#run cpld_fv3_384_mom6_cice_cold_2012040100 @ benchmark, coldBM2 +#run cpld_fv3_384_mom6_cice_cold_2012070100 @ benchmark, coldBM2 +#run cpld_fv3_384_mom6_cice_cold_2012100100 @ benchmark, coldBM2 + +#load 'datesuite_warm.input' +#run cpld_fv3_384_mom6_cice_5d_2012010100 @ benchmark, warmBM2 +#run cpld_fv3_384_mom6_cice_5d_2012040100 @ benchmark, warmBM2 +#run cpld_fv3_384_mom6_cice_5d_2012070100 @ benchmark, warmBM2 +#run cpld_fv3_384_mom6_cice_5d_2012100100 @ benchmark, warmBM2 diff --git a/compsets/cpld_fv3_ccpp_mom6_cice_2d_atm_flux.input b/compsets/cpld_fv3_ccpp_mom6_cice_2d_atm_flux.input new file mode 100644 index 00000000..7a9d4ae0 --- /dev/null +++ b/compsets/cpld_fv3_ccpp_mom6_cice_2d_atm_flux.input @@ -0,0 +1,200 @@ +######################################################################## +test cpld_fv3_ccpp_mom6_cice_2d_atm_flux: fv3_ccpp_mom6_cice.exe { + use plat + use plat%default_cpl + use fv3_defaults + use cpl_defaults + + TEST_DESCR="Fully coupled FV3-MOM6-CICE system - 2d_warm" + CNTL_NAME="RT-Baselines_2d_warm@[ATMRES]" + + DAYS='2' # run for 2 days + FHMAX='48' + FDIAG='6' + walltime=3600 # seconds + + COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area + RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area + CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area + + FV3_input_data="@[plat%INPUTS]/FV3_input_data@[ATMRES]" + UGCS_input_data="@[plat%INPUTS]" + OZONE_data="@[FV3_input_data]/INPUT/global_o3prdlos.f77" + CO2_data="@[FV3_input_data]/INPUT" + MED_restart_data="@[UGCS_input_data]/MEDIATOR@[ATMRES]" + RESTART_MED="mediator_*" + + build=fv3_ccpp_mom6_cice.exe + + prep=fv3cpld_prep( + RUNDIR="@[RUNDIR]",modules="@[fv3_ccpp_mom6_cice.exe%modules.nems]", + CNTL="@[CNTL]") + + # - set component and coupling timesteps + DT_CICE="@[DT_ATMOS]" + CPL_SLOW="@[DT_THERM_MOM6]" + CPL_FAST="@[DT_ATMOS]" + + # - set date YYYYMMDDHH + SYEAR='2016' + SMONTH='10' + SDAY='03' + SHOUR='00' + CDATE="@[SYEAR]@[SMONTH]@[SDAY]@[SHOUR]" + + # write a CICE restart at DAYS + DUMPFREQ_N="@[DAYS]" + DUMPFREQ='d' + + # set default locations of ICs + FV3_IC="@[FV3_input_data]/INPUT" + MOM6_IC="@[UGCS_input_data]/MOM6_IC" + CICE5_IC="@[UGCS_input_data]/CICE_IC" + FV3_mosaic="C96" + + # - nems.configure --- + nems_configure="med_atm_ocn_ice" + coupling_interval_slow_sec="@[CPL_SLOW]" + coupling_interval_fast_sec="@[CPL_FAST]" + + # Specify input files. + filters input { + # WORK FILE <=filter= SOURCE FILE +#FV3 fixed input + 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" + 'co2historicaldata_201*.txt' <=copyfrom= "@[CO2_data]" + 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" + 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" + 'global_h2oprdlos.f77' <=copy= "@[FV3_input_data]/global_h2o_pltc.f77" + 'global_o3prdlos.f77' <=copy= "@[OZONE_data]" + '*grb' <=copyfrom= "@[FV3_input_data]" + 'field_table' <=copy= "@[FV3_input_data]/@[FIELD_TABLE]" + 'INPUT/grid_spec.nc' <=copy= "@[UGCS_input_data]/CPL_FIX/a@[FV3_mosaic]o@[OCNRES]/grid_spec.nc" + "INPUT/@[FV3_mosaic]_grid*nc" <=copyfrom= "@[FV3_input_data]/INPUT" + 'INPUT/oro_data*nc' <=copyfrom= "@[FV3_input_data]/INPUT" + "INPUT/@[FV3_mosaic]_mosaic.nc" <=copy= "@[FV3_input_data]/INPUT/grid_spec.nc" + 'INPUT/gfs_ctrl.nc' <=copyfrom= "@[FV3_input_data]/INPUT" +#MOM6 fixed input + 'INPUT/*' <=copyfrom= "@[UGCS_input_data]/MOM6_FIX/@[OCNRES]" +#CICE5 fixed input + 'grid_cice_NEMS_mx025.nc' <=copy= "@[UGCS_input_data]/CICE_FIX/@[OCNRES]/grid_cice_NEMS_mx025.nc" + 'kmtu_cice_NEMS_mx025.nc' <=copy= "@[UGCS_input_data]/CICE_FIX/@[OCNRES]/kmtu_cice_NEMS_mx025.nc" +# ICs + 'INPUT/sfc_data*.nc' <=copyfrom= "@[FV3_IC]" + 'INPUT/gfs_data*.nc' <=copyfrom= "@[FV3_IC]" + 'INPUT/MOM*.nc' <=copyfrom= "@[MOM6_IC]" + 'cice5_model.res.nc' <=copy= "@[CICE5_IC]/cice5_model_0.25.res_@[CDATE].nc" + "@[RESTART_MED]" <=copyfrom= "@[MED_restart_data]" +# namelists,templates and configurations + 'input.nml' <=atparse= "@[PARMnems]/@[INPUT_CCPP_NML]" + 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" + 'ice_in_template' <=copy= "@[PARMnems]/ice_in_template" + 'INPUT/MOM_input_template' <=copy= "@[PARMnems]/MOM_input_template" + 'diag_table_template' <=copy= "@[PARMnems]/diag_table_template" + 'data_table' <=copy= "@[PARMnems]/data_table" + "nems.configure" <=atparse= "@[PARMnems]/nems.configure.@[nems_configure].IN" + "suite_@[SUITE_NAME].xml" <=copyfrom= "@[PARMnems]/../FV3/ccpp/suites" + } + + # Edit the templates for the compset parameters + prerun=edit_inputs(CDATE="@[CDATE]", + ATMRES="@[FV3_mosaic]", + DT_CICE="@[DT_CICE]", + NPROC_ICE="@[NPROC_ICE]", + RUNTYPE="@[RUNTYPE]", + USE_RESTART_TIME="@[USE_RESTART_TIME]", + FRAZIL_FWSALT="@[FRAZIL_FWSALT]", + RUNID="@[RUNID]", + CICE_HIST_AVG="@[CICE_HIST_AVG]", + DUMPFREQ_N="@[DUMPFREQ_N]", + DUMPFREQ="@[DUMPFREQ]", + DT_THERM="@[DT_THERM_MOM6]", + DT_DYNAM="@[DT_DYNAM_MOM6]", + MOM6_RIVER_RUNOFF="@[MOM6_RIVER_RUNOFF]") + + # Specify output files: + criteria output { + # WORKFILE .comparison. TARGET + 'phyf048.tile1.nc' .bitcmp. "@[CNTL]" + 'phyf048.tile2.nc' .bitcmp. "@[CNTL]" + 'phyf048.tile3.nc' .bitcmp. "@[CNTL]" + 'phyf048.tile4.nc' .bitcmp. "@[CNTL]" + 'phyf048.tile5.nc' .bitcmp. "@[CNTL]" + 'phyf048.tile6.nc' .bitcmp. "@[CNTL]" + 'dynf048.tile1.nc' .bitcmp. "@[CNTL]" + 'dynf048.tile2.nc' .bitcmp. "@[CNTL]" + 'dynf048.tile3.nc' .bitcmp. "@[CNTL]" + 'dynf048.tile4.nc' .bitcmp. "@[CNTL]" + 'dynf048.tile5.nc' .bitcmp. "@[CNTL]" + 'dynf048.tile6.nc' .bitcmp. "@[CNTL]" + 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART" + 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART" + 'MOM6_RESTART/MOM.res.nc' .bitcmp. "@[CNTL]/RESTART" + 'MOM6_RESTART/MOM.res_1.nc' .bitcmp. "@[CNTL]/RESTART" + 'MOM6_RESTART/MOM.res_2.nc' .bitcmp. "@[CNTL]/RESTART" + 'MOM6_RESTART/MOM.res_3.nc' .bitcmp. "@[CNTL]/RESTART" + 'restart/iced.2016-10-05-00000.nc' .bitcmp. "@[CNTL]/RESTART" + 'mediator_FBaccumAtm_restart.tile1.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBaccumAtm_restart.tile2.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBaccumAtm_restart.tile3.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBaccumAtm_restart.tile4.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBaccumAtm_restart.tile5.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBaccumAtm_restart.tile6.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBaccumOcn_restart.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBaccumIce_restart.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBaccumLnd_restart.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBaccumHyd_restart.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBaccumAtmOcn_restart.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBAtm_a_restart.tile1.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBAtm_a_restart.tile2.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBAtm_a_restart.tile3.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBAtm_a_restart.tile4.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBAtm_a_restart.tile5.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBAtm_a_restart.tile6.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBIce_i_restart.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBOcn_o_restart.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBLnd_l_restart.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBHyd_h_restart.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + 'mediator_FBAtmOcn_o_restart.nc' .bitcmp. "@[CNTL]/MEDIATOR_after_2d" + # Executable validation. This makes an MD5 sum of the fv3.exe + # for comparison against the MD5 sum made in the build job. + # This is to ensure the executable did not change during the + # test suite. + "@[build%target]" .md5cmp. "@[fv3_ccpp_mom6_cice.exe%md5sum]" + } + + spawn execute { + # Run the + {"@[build%target]", ranks="@[TASKS]" } + } +} diff --git a/compsets/cpld_fv3_ccpp_mom6_cice_cold_atm_flux.input b/compsets/cpld_fv3_ccpp_mom6_cice_cold_atm_flux.input new file mode 100644 index 00000000..82842b07 --- /dev/null +++ b/compsets/cpld_fv3_ccpp_mom6_cice_cold_atm_flux.input @@ -0,0 +1,180 @@ +######################################################################## + +test cpld_fv3_ccpp_mom6_cice_cold_atm_flux: fv3_ccpp_mom6_cice.exe { + use plat + use plat%default_cpl + use fv3_defaults + use cpl_defaults + + TEST_DESCR="Fully coupled FV3-MOM6-CICE system - cold start" + CNTL_NAME="RT-Baselines_cold@[ATMRES]" + + DAYS='0.041666666' + FHMAX='1' #Note this needs to be at least 2x CPL_SLOW + + COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area + RUNDIR="@[plat%TMPrt]/@[TEST_NAME]" # Test work area + CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area + CNTLMED="@[plat%BASELINE]/MEDIATOR@[ATMRES]" + + FV3_input_data="@[plat%INPUTS]/FV3_input_data@[ATMRES]" + UGCS_input_data="@[plat%INPUTS]" + OZONE_data="@[FV3_input_data]/INPUT/global_o3prdlos.f77" + CO2_data="@[FV3_input_data]/INPUT" + + build=fv3_ccpp_mom6_cice.exe + + prep=fv3cpld_prep( + RUNDIR="@[RUNDIR]",modules="@[fv3_ccpp_mom6_cice.exe%modules.nems]", + CNTL="@[CNTL]") + + # - set component and coupling timesteps + DT_CICE="@[DT_ATMOS]" + CPL_SLOW="@[DT_THERM_MOM6]" + CPL_FAST="@[DT_ATMOS]" + + # - set date YYYYMMDDHH + SYEAR='2016' + SMONTH='10' + SDAY='03' + SHOUR='00' + CDATE="@[SYEAR]@[SMONTH]@[SDAY]@[SHOUR]" + + # write a CICE restart at FHMAX + DUMPFREQ_N="@[FHMAX]" + DUMPFREQ="h" + + # set default locations of ICs + FV3_IC="@[FV3_input_data]/INPUT" + MOM6_IC="@[UGCS_input_data]/MOM6_IC" + CICE5_IC="@[UGCS_input_data]/CICE_IC" + FV3_mosaic="C96" + + # - nems.configure --- + nems_configure="medcold_atm_ocn_ice" + coupling_interval_slow_sec="@[CPL_SLOW]" + coupling_interval_fast_sec="@[CPL_FAST]" + + # Specify input files. + filters input { + # WORK FILE <=filter= SOURCE FILE +#FV3 fixed input + 'aerosol.dat' <=copyfrom= "@[FV3_input_data]/INPUT" + 'co2historicaldata_201*.txt' <=copyfrom= "@[CO2_data]" + 'sfc_emissivity_idx.txt' <=copyfrom= "@[FV3_input_data]/INPUT" + 'solarconstant_noaa_an.txt' <=copyfrom= "@[FV3_input_data]/INPUT" + 'global_h2oprdlos.f77' <=copy= "@[FV3_input_data]/global_h2o_pltc.f77" + 'global_o3prdlos.f77' <=copy= "@[OZONE_data]" + '*grb' <=copyfrom= "@[FV3_input_data]" + 'field_table' <=copy= "@[FV3_input_data]/@[FIELD_TABLE]" + 'INPUT/grid_spec.nc' <=copy= "@[UGCS_input_data]/CPL_FIX/a@[FV3_mosaic]o@[OCNRES]/grid_spec.nc" + "INPUT/@[FV3_mosaic]_grid*nc" <=copyfrom= "@[FV3_input_data]/INPUT" + 'INPUT/oro_data*nc' <=copyfrom= "@[FV3_input_data]/INPUT" + "INPUT/@[FV3_mosaic]_mosaic.nc" <=copy= "@[FV3_input_data]/INPUT/grid_spec.nc" + 'INPUT/gfs_ctrl.nc' <=copyfrom= "@[FV3_input_data]/INPUT" +#MOM6 fixed input + 'INPUT/*' <=copyfrom= "@[UGCS_input_data]/MOM6_FIX/@[OCNRES]" +#CICE5 fixed input + 'grid_cice_NEMS_mx025.nc' <=copy= "@[UGCS_input_data]/CICE_FIX/@[OCNRES]/grid_cice_NEMS_mx025.nc" + 'kmtu_cice_NEMS_mx025.nc' <=copy= "@[UGCS_input_data]/CICE_FIX/@[OCNRES]/kmtu_cice_NEMS_mx025.nc" +# ICs + 'INPUT/sfc_data*.nc' <=copyfrom= "@[FV3_IC]" + 'INPUT/gfs_data*.nc' <=copyfrom= "@[FV3_IC]" + 'INPUT/MOM*.nc' <=copyfrom= "@[MOM6_IC]" + 'cice5_model.res.nc' <=copy= "@[CICE5_IC]/cice5_model_0.25.res_@[CDATE].nc" +# namelists,templates and configurations + 'input.nml' <=atparse= "@[PARMnems]/@[INPUT_CCPP_NML]" + 'model_configure' <=atparse= "@[PARMnems]/model_configure.IN" + 'ice_in_template' <=copy= "@[PARMnems]/ice_in_template" + 'INPUT/MOM_input_template' <=copy= "@[PARMnems]/MOM_input_template" + 'diag_table_template' <=copy= "@[PARMnems]/diag_table_template" + 'data_table' <=copy= "@[PARMnems]/data_table" + "nems.configure" <=atparse= "@[PARMnems]/nems.configure.@[nems_configure].IN" + "suite_@[SUITE_NAME].xml" <=copyfrom= "@[PARMnems]/../FV3/ccpp/suites" + } + + # Edit the templates for the compset parameters + prerun=edit_inputs(CDATE="@[CDATE]", + ATMRES="@[FV3_mosaic]", + DT_CICE="@[DT_CICE]", + NPROC_ICE="@[NPROC_ICE]", + RUNTYPE="@[RUNTYPE]", + USE_RESTART_TIME="@[USE_RESTART_TIME]", + FRAZIL_FWSALT="@[FRAZIL_FWSALT]", + RUNID="@[RUNID]", + CICE_HIST_AVG="@[CICE_HIST_AVG]", + DUMPFREQ_N="@[DUMPFREQ_N]", + DUMPFREQ="@[DUMPFREQ]", + DT_THERM="@[DT_THERM_MOM6]", + DT_DYNAM="@[DT_DYNAM_MOM6]", + MOM6_RIVER_RUNOFF="@[MOM6_RIVER_RUNOFF]") + + # Specify output files: + criteria output { + # WORKFILE .comparison. TARGET + 'phyf001.tile1.nc' .bitcmp. "@[CNTL]" + 'phyf001.tile2.nc' .bitcmp. "@[CNTL]" + 'phyf001.tile3.nc' .bitcmp. "@[CNTL]" + 'phyf001.tile4.nc' .bitcmp. "@[CNTL]" + 'phyf001.tile5.nc' .bitcmp. "@[CNTL]" + 'phyf001.tile6.nc' .bitcmp. "@[CNTL]" + 'dynf001.tile1.nc' .bitcmp. "@[CNTL]" + 'dynf001.tile2.nc' .bitcmp. "@[CNTL]" + 'dynf001.tile3.nc' .bitcmp. "@[CNTL]" + 'dynf001.tile4.nc' .bitcmp. "@[CNTL]" + 'dynf001.tile5.nc' .bitcmp. "@[CNTL]" + 'dynf001.tile6.nc' .bitcmp. "@[CNTL]" + 'RESTART/coupler.res' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_core.res.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_core.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_core.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_core.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_core.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_core.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_core.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_srf_wnd.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_srf_wnd.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_srf_wnd.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_srf_wnd.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_srf_wnd.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_srf_wnd.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_tracer.res.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_tracer.res.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_tracer.res.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_tracer.res.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_tracer.res.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/fv_tracer.res.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/phy_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/phy_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/phy_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/phy_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/phy_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/phy_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/sfc_data.tile1.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/sfc_data.tile2.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/sfc_data.tile3.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/sfc_data.tile4.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/sfc_data.tile5.nc' .bitcmp. "@[CNTL]/RESTART/" + 'RESTART/sfc_data.tile6.nc' .bitcmp. "@[CNTL]/RESTART/" + 'mediator_FBAtm_a_restart.tile1.nc' .bitcmp. "@[CNTLMED]/" + 'mediator_FBAtm_a_restart.tile2.nc' .bitcmp. "@[CNTLMED]/" + 'mediator_FBAtm_a_restart.tile3.nc' .bitcmp. "@[CNTLMED]/" + 'mediator_FBAtm_a_restart.tile4.nc' .bitcmp. "@[CNTLMED]/" + 'mediator_FBAtm_a_restart.tile5.nc' .bitcmp. "@[CNTLMED]/" + 'mediator_FBAtm_a_restart.tile6.nc' .bitcmp. "@[CNTLMED]/" + 'mediator_FBAtmOcn_o_restart.nc' .bitcmp. "@[CNTLMED]/" + 'mediator_FBIce_i_restart.nc' .bitcmp. "@[CNTLMED]/" + 'mediator_FBOcn_o_restart.nc' .bitcmp. "@[CNTLMED]/" + 'mediator_scalars_restart.txt' .bitcmp. "@[CNTLMED]/" + # Executable validation. This makes an MD5 sum of the fv3.exe + # for comparison against the MD5 sum made in the build job. + # This is to ensure the executable did not change during the + # test suite. + "@[build%target]" .md5cmp. "@[fv3_ccpp_mom6_cice.exe%md5sum]" + } + + spawn execute { + # Run the + {"@[build%target]", ranks="@[TASKS]" } + } +} diff --git a/compsets/fv3mom6cice5_ccpp.input b/compsets/fv3mom6cice5_ccpp.input new file mode 100644 index 00000000..3d90d9d1 --- /dev/null +++ b/compsets/fv3mom6cice5_ccpp.input @@ -0,0 +1,258 @@ +load 'platforms.input' +load 'nemscommon.input' +load 'fv3.input' + +######################################################################## + +# Common prep step at the top of all fv3cpld tests: + +embed bash fv3cpld_prep(RUNDIR,modules,CNTL) [[[ + rm -rf "$RUNDIR" + mkdir -p "$RUNDIR" "$CNTL" + cd @[RUNDIR] + + set +e + + source @[plat%SRCnems]/conf/module-setup.sh.inc + module purge + module use $( dirname $modules ) + module load $( basename $modules ) + + @[plat%execution_time_modules] + + mkdir RESTART INPUT + #For MOM6 + mkdir MOM6_RESTART MOM6_OUTPUT + #For CICE + mkdir history restart + + export MPI_TYPE_DEPTH=20 + export OMP_STACKSIZE=512M + export ESMF_RUNTIME_COMPLIANCECHECK=OFF:depth=4 + + #To run Cupid, comment out the above ESMF_RUNTIME_COMPLIANCECHECK and + #uncomment the two rows below + #export ESMF_RUNTIME_COMPLIANCECHECK=OFF # removed depth=4 + #export ESMF_RUNTIME_TRACE=ON # added this + + # Set the stack limit as high as we can. + if [[ $( ulimit -s ) != unlimited ]] ; then + for try_limit in 20000 18000 12000 9000 6000 3000 1500 1000 800 ; do + if [[ ! ( $( ulimit -s ) -gt $(( try_limit * 1000 )) ) ]] ; then + ulimit -s $(( try_limit * 1000 )) + else + break + fi + done + fi + + ulimit -a +]]] + +build fv3_ccpp_mom6_cice.exe { + # Use NEMSAppBuilder to build a coupled app. + use plat + # Note: + # plat%EXECrt = temporary directory for executables and md5 sums + # plat%INCrt = temporary directory for modulefiles + target="@[plat%EXECrt]/fv3_ccpp_mom6_cice.exe" + modules.nems="@[plat%INCrt]/modules_fv3_mom6_cice" + md5sum="@[target].md5" + + # The NEMSAppBuilder is another embedded bash script in nemscommon.input + build=NEMSAppBuilder(NEMS.x="@[target]",modules.nems="@[modules.nems]", + OPTS="app=coupledFV3_CCPP_MOM6_CICE rebuild",md5sum="@[md5sum]") +} +######################################################################## +#NOTE: DO NOT UPDATE the fv3_default variables for coupled fiels, +#update them within the tests themselves. The fv3_default variables +#are updated to match the NEMSfv3gfs variables only. Instead, update +#the cpl_defaults + +cpl_defaults = { + ATMRES='' + OCNRES='025' + INPUT_NML="input.mom6.nml.IN" + FIELD_TABLE="field_table" + NSOUT='-1' + CPLFLX='.T.' + CPL='.true.' + NSTF_NAME='0,0,0,0,0' + MOM6_RESTART_SETTING='n' + med_model="nems" + atm_model="fv3" + ocn_model="mom6" + ice_model="cice" +# future use: for MOM6 river runoff + MOM6_RIVER_RUNOFF='True' + NPROC_ICE='48' + DT_ATMOS='900' #needed for C96 cases + DT_DYNAM_MOM6='900' + DT_THERM_MOM6='1800' +# defaults for CICE runtype and restart writing + RUNTYPE='initial' + DUMPFREQ='d' + DUMPFREQ_N='35' + USE_RESTART_TIME='.false.' +# setting to true will allow Frazil FW and Salt to be +# included in fluxes sent to ocean + FRAZIL_FWSALT='.true.' +# default to write CICE average history files + CICE_HIST_AVG='.true.' +# default setting for runid + RUNID='unknown' +# for FV3: default values will be changed if doing a warm-warm restart + WARM_START='.F.' + MAKE_NH='.T.' + NA_INIT='1' + EXTERNAL_IC='.T.' + NGGPS_IC='.T.' + MOUNTAIN='.F.' +} +ccpp_defaults = { + SUITE_NAME='FV3_GFS_2017_coupled' + INPUT_CCPP_NML='input.mom6_ccpp.nml.IN' +} + +######################################################################## +# embeded bash script to create input files at prerun from specification +# in compset + +embed bash edit_inputs(CDATE,ATMRES,DT_CICE,NPROC_ICE,RUNTYPE,USE_RESTART_TIME,FRAZIL_FWSALT,RUNID,CICE_HIST_AVG,DUMPFREQ_N,DUMPFREQ,DT_THERM,DT_DYNAM,MOM6_RIVER_RUNOFF) [[[ + +python <