diff --git a/tests/default_vars.sh b/tests/default_vars.sh index cb4edad16e..5608aec034 100755 --- a/tests/default_vars.sh +++ b/tests/default_vars.sh @@ -15,6 +15,11 @@ INPES_cpl_atmw=3; JNPES_cpl_atmw=8; WPG_cpl_atmw=6 WAV_tasks_atmw=30 + TASKS_cpl_c48=20; THRD_cpl_c48=1 + INPES_cpl_c48=1; JNPES_cpl_c48=1; WPG_cpl_c48=6 + OCN_tasks_cpl_c48=4 + ICE_tasks_cpl_c48=4 + TASKS_cpl_dflt=200; THRD_cpl_dflt=1 INPES_cpl_dflt=3; JNPES_cpl_dflt=8; WPG_cpl_dflt=6 OCN_tasks_cpl_dflt=20 diff --git a/tests/fv3_conf/cpld_control_run.IN b/tests/fv3_conf/cpld_control_run.IN index 35c9b58ff1..1280c61704 100644 --- a/tests/fv3_conf/cpld_control_run.IN +++ b/tests/fv3_conf/cpld_control_run.IN @@ -13,9 +13,15 @@ if [[ $BMIC == .true. ]]; then MOM_IC=@[INPUTDATA_ROOT_BMIC]/${SYEAR}${SMONTH}${SDAY}${SHOUR}/mom6_da ICE_IC=@[INPUTDATA_ROOT_BMIC]/${SYEAR}${SMONTH}${SDAY}${SHOUR}/cpc else - FV3_IC=@[INPUTDATA_ROOT]/${FV3_DIR}/INPUT_L127_mx${OCNRES} - MOM_IC=@[INPUTDATA_ROOT]/MOM6_IC - ICE_IC=@[INPUTDATA_ROOT]/CICE_IC/${OCNRES} + if [[ $ATMRES == C48 ]]; then + FV3_IC=@[INPUTDATA_ROOT]/${FV3_DIR}/INPUT_L127_mx${OCNRES}/${SYEAR}${SMONTH}${SDAY}${SHOUR} + MOM_IC=@[INPUTDATA_ROOT]/MOM6_IC/${OCNRES}/${SYEAR}${SMONTH}${SDAY}${SHOUR} + ICE_IC=@[INPUTDATA_ROOT]/CICE_IC/${OCNRES}/${SYEAR}${SMONTH}${SDAY}${SHOUR} + else + FV3_IC=@[INPUTDATA_ROOT]/${FV3_DIR}/INPUT_L127_mx${OCNRES} + MOM_IC=@[INPUTDATA_ROOT]/MOM6_IC + ICE_IC=@[INPUTDATA_ROOT]/CICE_IC/${OCNRES} + fi fi # FV3 fixed input @@ -72,53 +78,67 @@ if [ $WARM_START = .false. ]; then cp ${MOM_IC}/MOM*.nc ./INPUT cp ${ICE_IC}/cice5_model_@[ICERES].res_${SYEAR}${SMONTH}${SDAY}00.nc ./cice_model.res.nc else - cp ${MOM_IC}/MOM6_IC_TS_${SYEAR}${SMONTH}${SDAY}${SHOUR}.nc ./INPUT/MOM6_IC_TS.nc - cp ${ICE_IC}/cice_model_@[ICERES].cpc.res_${SYEAR}${SMONTH}${SDAY}.nc ./cice_model.res.nc + if [[ $ATMRES == C48 ]]; then + cp ${MOM_IC}/MOM.res.nc ./INPUT + cp ${ICE_IC}/cice_model_@[ICERES].cpc.res_* ./cice_model.res.nc + else + cp ${MOM_IC}/MOM6_IC_TS_${SYEAR}${SMONTH}${SDAY}${SHOUR}.nc ./INPUT/MOM6_IC_TS.nc + cp ${ICE_IC}/cice_model_@[ICERES].cpc.res_${SYEAR}${SMONTH}${SDAY}.nc ./cice_model.res.nc + fi fi -#Restart else - if [[ ${OPNREQ_TEST} == true ]]; then - SUFFIX=${BL_SUFFIX} - fi +#Restart from checkpoint restart + if [[ "Q${DEP_RUN:-}" != Q ]] ; then + if [[ ${OPNREQ_TEST} == true ]]; then + SUFFIX=${BL_SUFFIX} + fi + + # Restart files + cp -r ../${DEP_RUN}${SUFFIX}/INPUT/* ./INPUT + cp -r ../${DEP_RUN}${SUFFIX}/RESTART/${RESTART_FILE_PREFIX}.* ./INPUT + for RFILE in INPUT/${RESTART_FILE_PREFIX}.*; do + [ -e $RFILE ] || exit 1 + RFILE_OLD=$(basename $RFILE) + mv -f $RFILE INPUT/"${RFILE_OLD//${RESTART_FILE_PREFIX}./}" + done + + #if not mx025, then mom6 restart is a single file + if [[ $OCNRES == 025 ]]; then + cp ../${DEP_RUN}${SUFFIX}/RESTART/MOM.res.${RESTART_FILE_SUFFIX_HRS}-00-00.nc ./INPUT/MOM.res.nc + cp ../${DEP_RUN}${SUFFIX}/RESTART/MOM.res.${RESTART_FILE_SUFFIX_HRS}-00-00_1.nc ./INPUT/MOM.res_1.nc + cp ../${DEP_RUN}${SUFFIX}/RESTART/MOM.res.${RESTART_FILE_SUFFIX_HRS}-00-00_2.nc ./INPUT/MOM.res_2.nc + cp ../${DEP_RUN}${SUFFIX}/RESTART/MOM.res.${RESTART_FILE_SUFFIX_HRS}-00-00_3.nc ./INPUT/MOM.res_3.nc + else + cp ../${DEP_RUN}${SUFFIX}/RESTART/MOM.res.${RESTART_FILE_SUFFIX_HRS}-00-00.nc ./INPUT/MOM.res.nc + fi + + # CMEPS restart and pointer files + RFILE=ufs.cpld.cpl.r.${RESTART_FILE_SUFFIX_SECS}.nc + cp ../${DEP_RUN}${SUFFIX}/RESTART/${RFILE} . + ls -1 ${RFILE}>rpointer.cpl + + # CMEPS/CCPP restart file + if [[ $CPLMODE =~ 'nems_frac_aoflux' ]]; then + RFILE_CCPP=ufs.cpld.cpl.ccpp.${RESTART_FILE_SUFFIX_SECS}.nc + cp ../${DEP_RUN}${SUFFIX}/${RFILE_CCPP} . + fi + + # CICE restart and pointer files + RFILE=iced.${RESTART_FILE_SUFFIX_SECS}.nc + cp ../${DEP_RUN}${SUFFIX}/RESTART/${RFILE} ./INPUT + ls -1 ./INPUT/${RFILE}>ice.restart_file + + # WAVE restart file + if [[ $CPLWAV == .true. ]]; then + cp ../${DEP_RUN}${SUFFIX}/${RESTART_FILE_PREFIX}.restart.ww3 ./restart.ww3 + fi - # Restart files - cp -r ../${DEP_RUN}${SUFFIX}/INPUT/* ./INPUT - cp -r ../${DEP_RUN}${SUFFIX}/RESTART/${RESTART_FILE_PREFIX}.* ./INPUT - for RFILE in INPUT/${RESTART_FILE_PREFIX}.*; do - [ -e $RFILE ] || exit 1 - RFILE_OLD=$(basename $RFILE) - mv -f $RFILE INPUT/"${RFILE_OLD//${RESTART_FILE_PREFIX}./}" - done - - #if not mx025, then mom6 restart is a single file - if [[ $OCNRES == 025 ]]; then - cp ../${DEP_RUN}${SUFFIX}/RESTART/MOM.res.${RESTART_FILE_SUFFIX_HRS}-00-00.nc ./INPUT/MOM.res.nc - cp ../${DEP_RUN}${SUFFIX}/RESTART/MOM.res.${RESTART_FILE_SUFFIX_HRS}-00-00_1.nc ./INPUT/MOM.res_1.nc - cp ../${DEP_RUN}${SUFFIX}/RESTART/MOM.res.${RESTART_FILE_SUFFIX_HRS}-00-00_2.nc ./INPUT/MOM.res_2.nc - cp ../${DEP_RUN}${SUFFIX}/RESTART/MOM.res.${RESTART_FILE_SUFFIX_HRS}-00-00_3.nc ./INPUT/MOM.res_3.nc else - cp ../${DEP_RUN}${SUFFIX}/RESTART/MOM.res.${RESTART_FILE_SUFFIX_HRS}-00-00.nc ./INPUT/MOM.res.nc - fi - - # CMEPS restart and pointer files - RFILE=ufs.cpld.cpl.r.${RESTART_FILE_SUFFIX_SECS}.nc - cp ../${DEP_RUN}${SUFFIX}/RESTART/${RFILE} . - ls -1 ${RFILE}>rpointer.cpl - - # CMEPS/CCPP restart file - if [[ $CPLMODE =~ 'nems_frac_aoflux' ]]; then - RFILE_CCPP=ufs.cpld.cpl.ccpp.${RESTART_FILE_SUFFIX_SECS}.nc - cp ../${DEP_RUN}${SUFFIX}/${RFILE_CCPP} . - fi - - # CICE restart and pointer files - RFILE=iced.${RESTART_FILE_SUFFIX_SECS}.nc - cp ../${DEP_RUN}${SUFFIX}/RESTART/${RFILE} ./INPUT - ls -1 ./INPUT/${RFILE}>ice.restart_file - - # WAVE restart file - if [[ $CPLWAV == .true. ]]; then - cp ../${DEP_RUN}${SUFFIX}/${RESTART_FILE_PREFIX}.restart.ww3 ./restart.ww3 + # C48mx500 warm start from ICs + cp ${FV3_IC}/*.nc ./INPUT + cp ${MOM_IC}/MOM.res.nc ./INPUT + cp ${ICE_IC}/* . + cp @[INPUTDATA_ROOT]/CMEPS_IC/${ATMRES}mx${OCNRES}/${SYEAR}${SMONTH}${SDAY}${SHOUR}/* . fi fi diff --git a/tests/parm/MOM_input_template_500 b/tests/parm/MOM_input_template_500 new file mode 100644 index 0000000000..155fcfd480 --- /dev/null +++ b/tests/parm/MOM_input_template_500 @@ -0,0 +1,515 @@ +! This file was written by the model and records the non-default parameters used at run-time. + +! === module MOM === + +! === module MOM_unit_scaling === +! Parameters for doing unit scaling of variables. +USE_REGRIDDING = True ! [Boolean] default = False + ! If True, use the ALE algorithm (regridding/remapping). If False, use the + ! layered isopycnal algorithm. +THICKNESSDIFFUSE = True ! [Boolean] default = False + ! If true, interface heights are diffused with a coefficient of KHTH. +THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False + ! If true, do thickness diffusion before dynamics. This is only used if + ! THICKNESSDIFFUSE is true. +DT = @[DT_DYNAM_MOM6] ! [s] + ! The (baroclinic) dynamics time step. The time-step that is actually used will + ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode + ! or the coupling timestep in coupled mode.) +DT_THERM = @[DT_THERM_MOM6] ! [s] default = 1800.0 + ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be + ! an integer multiple of DT and less than the forcing or coupling time-step, + ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer + ! multiple of the coupling timestep. By default DT_THERM is set to DT. +THERMO_SPANS_COUPLING = @[MOM6_THERMO_SPAN] ! [Boolean] default = False + ! If true, the MOM will take thermodynamic and tracer timesteps that can be + ! longer than the coupling timestep. The actual thermodynamic timestep that is + ! used in this case is the largest integer multiple of the coupling timestep + ! that is less than or equal to DT_THERM. +HFREEZE = 20.0 ! [m] default = -1.0 + ! If HFREEZE > 0, melt potential will be computed. The actual depth + ! over which melt potential is computed will be min(HFREEZE, OBLD) + ! where OBLD is the boundary layer depth. If HFREEZE <= 0 (default) + ! melt potential will not be computed. +FRAZIL = True ! [Boolean] default = False + ! If true, water freezes if it gets too cold, and the accumulated heat deficit + ! is returned in the surface state. FRAZIL is only used if + ! ENABLE_THERMODYNAMICS is true. +BOUND_SALINITY = True ! [Boolean] default = False + ! If true, limit salinity to being positive. (The sea-ice model may ask for more + ! salt than is available and drive the salinity negative otherwise.) + +! === module MOM_domains === +TRIPOLAR_N = True ! [Boolean] default = False + ! Use tripolar connectivity at the northern edge of the domain. With + ! TRIPOLAR_N, NIGLOBAL must be even. +NIGLOBAL = @[NX_GLB] ! + ! The total number of thickness grid points in the x-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NJGLOBAL = @[NY_GLB] ! + ! The total number of thickness grid points in the y-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. + +! === module MOM_hor_index === +! Sets the horizontal array index types. + +! === module MOM_fixed_initialization === +INPUTDIR = "INPUT" ! default = "." + ! The directory in which input files are found. + +! === module MOM_grid_init === +GRID_CONFIG = "mosaic" ! + ! A character string that determines the method for defining the horizontal + ! grid. Current options are: + ! mosaic - read the grid from a mosaic (supergrid) + ! file set by GRID_FILE. + ! cartesian - use a (flat) Cartesian grid. + ! spherical - use a simple spherical grid. + ! mercator - use a Mercator spherical grid. +GRID_FILE = "ocean_hgrid.nc" ! + ! Name of the file from which to read horizontal grid data. +GRID_ROTATION_ANGLE_BUGS = False ! [Boolean] default = True + ! If true, use an older algorithm to calculate the sine and + ! cosines needed rotate between grid-oriented directions and + ! true north and east. Differences arise at the tripolar fold +USE_TRIPOLAR_GEOLONB_BUG = False ! [Boolean] default = True + ! If true, use older code that incorrectly sets the longitude in some points + ! along the tripolar fold to be off by 360 degrees. +TOPO_CONFIG = "file" ! + ! This specifies how bathymetry is specified: + ! file - read bathymetric information from the file + ! specified by (TOPO_FILE). + ! flat - flat bottom set to MAXIMUM_DEPTH. + ! bowl - an analytically specified bowl-shaped basin + ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. + ! spoon - a similar shape to 'bowl', but with an vertical + ! wall at the southern face. + ! halfpipe - a zonally uniform channel with a half-sine + ! profile in the meridional direction. + ! bbuilder - build topography from list of functions. + ! benchmark - use the benchmark test case topography. + ! Neverworld - use the Neverworld test case topography. + ! DOME - use a slope and channel configuration for the + ! DOME sill-overflow test case. + ! ISOMIP - use a slope and channel configuration for the + ! ISOMIP test case. + ! DOME2D - use a shelf and slope configuration for the + ! DOME2D gravity current/overflow test case. + ! Kelvin - flat but with rotated land mask. + ! seamount - Gaussian bump for spontaneous motion test case. + ! dumbbell - Sloshing channel with reservoirs on both ends. + ! shelfwave - exponential slope for shelfwave test case. + ! Phillips - ACC-like idealized topography used in the Phillips config. + ! dense - Denmark Strait-like dense water formation and overflow. + ! USER - call a user modified routine. +TOPO_FILE = "ocean_topog.nc" ! default = "topog.nc" + ! The file from which the bathymetry is read. +!MAXIMUM_DEPTH = 5801.341919389728 ! [m] + ! The (diagnosed) maximum depth of the ocean. +MINIMUM_DEPTH = 10.0 ! [m] default = 0.0 + ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is + ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is + ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than + ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. + +! === module MOM_open_boundary === +! Controls where open boundaries are located, what kind of boundary condition to impose, and what data to apply, +! if any. +MASKING_DEPTH = 0.0 ! [m] default = -9999.0 + ! The depth below which to mask points as land points, for which all fluxes are + ! zeroed out. MASKING_DEPTH is ignored if negative. + +! === module MOM_verticalGrid === +! Parameters providing information about the vertical grid. +NK = 25 ! [nondim] + ! The number of model layers. + +! === module MOM_tracer_registry === + +! === module MOM_EOS === +TFREEZE_FORM = "MILLERO_78" ! default = "LINEAR" + ! TFREEZE_FORM determines which expression should be used for the freezing + ! point. Currently, the valid choices are "LINEAR", "MILLERO_78", "TEOS10" + +! === module MOM_restart === +RESTART_CHECKSUMS_REQUIRED = False +! === module MOM_tracer_flow_control === + +! === module MOM_coord_initialization === +COORD_CONFIG = "file" ! default = "none" + ! This specifies how layers are to be defined: + ! ALE or none - used to avoid defining layers in ALE mode + ! file - read coordinate information from the file + ! specified by (COORD_FILE). + ! BFB - Custom coords for buoyancy-forced basin case + ! based on SST_S, T_BOT and DRHO_DT. + ! linear - linear based on interfaces not layers + ! layer_ref - linear based on layer densities + ! ts_ref - use reference temperature and salinity + ! ts_range - use range of temperature and salinity + ! (T_REF and S_REF) to determine surface density + ! and GINT calculate internal densities. + ! gprime - use reference density (RHO_0) for surface + ! density and GINT calculate internal densities. + ! ts_profile - use temperature and salinity profiles + ! (read from COORD_FILE) to set layer densities. + ! USER - call a user modified routine. +COORD_FILE = "layer_coord25.nc" ! + ! The file from which the coordinate densities are read. +REGRIDDING_COORDINATE_MODE = "HYCOM1" ! default = "LAYER" + ! Coordinate mode for vertical regridding. Choose among the following + ! possibilities: LAYER - Isopycnal or stacked shallow water layers + ! ZSTAR, Z* - stretched geopotential z* + ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf + ! SIGMA - terrain following coordinates + ! RHO - continuous isopycnal + ! HYCOM1 - HyCOM-like hybrid coordinate + ! SLIGHT - stretched coordinates above continuous isopycnal + ! ADAPTIVE - optimize for smooth neutral density surfaces +BOUNDARY_EXTRAPOLATION = True ! [Boolean] default = False + ! When defined, a proper high-order reconstruction scheme is used within + ! boundary cells rather than PCM. E.g., if PPM is used for remapping, a PPM + ! reconstruction will also be used within boundary cells. +ALE_COORDINATE_CONFIG = "HYBRID:hycom1_25.nc,sigma2,FNC1:5,4000,4.5,.01" ! default = "UNIFORM" + ! Determines how to specify the coordinate + ! resolution. Valid options are: + ! PARAM - use the vector-parameter ALE_RESOLUTION + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +!ALE_RESOLUTION = 2*5.0, 5.01, 5.07, 5.25, 5.68, 6.55, 8.1, 10.66, 14.620000000000001, 20.450000000000003, 28.73, 40.1, 55.32, 75.23, 100.8, 133.09, 173.26, 222.62, 282.56, 354.62, 440.47, 541.87, 660.76, 799.1800000000001 ! [m] + ! The distribution of vertical resolution for the target + ! grid used for Eulerian-like coordinates. For example, + ! in z-coordinate mode, the parameter is a list of level + ! thicknesses (in m). In sigma-coordinate mode, the list + ! is of non-dimensional fractions of the water column. +!TARGET_DENSITIES = 1010.0, 1020.843017578125, 1027.0274658203125, 1029.279541015625, 1030.862548828125, 1032.1572265625, 1033.27978515625, 1034.251953125, 1034.850830078125, 1035.28857421875, 1035.651123046875, 1035.967529296875, 1036.2410888671875, 1036.473876953125, 1036.6800537109375, 1036.8525390625, 1036.9417724609375, 1037.0052490234375, 1037.057373046875, 1037.1065673828125, 1037.15576171875, 1037.2060546875, 1037.26416015625, 1037.3388671875, 1037.4749755859375, 1038.0 ! [m] + ! HYBRID target densities for itnerfaces +REGRID_COMPRESSIBILITY_FRACTION = 0.01 ! [not defined] default = 0.0 + ! When interpolating potential density profiles we can add + ! some artificial compressibility solely to make homogenous + ! regions appear stratified. +MAXIMUM_INT_DEPTH_CONFIG = "FNC1:5,8000.0,1.0,.125" ! default = "NONE" + ! Determines how to specify the maximum interface depths. + ! Valid options are: + ! NONE - there are no maximum interface depths + ! PARAM - use the vector-parameter MAXIMUM_INTERFACE_DEPTHS + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,Z + ! FNC1:string - FNC1:dz_min,H_total,power,precision +!MAXIMUM_INT_DEPTHS = 0.0, 5.0, 36.25, 93.75, 177.5, 287.5, 423.75, 586.25, 775.0, 990.0, 1231.25, 1498.75, 1792.5, 2112.5, 2458.75, 2831.25, 3230.0, 3655.0, 4106.25, 4583.75, 5087.5, 5617.5, 6173.75, 6756.25, 7365.0, 8000.0 ! [m] + ! The list of maximum depths for each interface. +MAX_LAYER_THICKNESS_CONFIG = "FNC1:400,31000.0,0.1,.01" ! default = "NONE" + ! Determines how to specify the maximum layer thicknesses. + ! Valid options are: + ! NONE - there are no maximum layer thicknesses + ! PARAM - use the vector-parameter MAX_LAYER_THICKNESS + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,Z + ! FNC1:string - FNC1:dz_min,H_total,power,precision +!MAX_LAYER_THICKNESS = 400.0, 1094.2, 1144.02, 1174.81, 1197.42, 1215.4099999999999, 1230.42, 1243.3200000000002, 1254.65, 1264.78, 1273.94, 1282.31, 1290.02, 1297.17, 1303.85, 1310.1, 1316.0, 1321.5700000000002, 1326.85, 1331.87, 1336.67, 1341.25, 1345.6399999999999, 1349.85, 1353.88 ! [m] + ! The list of maximum thickness for each layer. +REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" + ! This sets the reconstruction scheme used for vertical remapping for all + ! variables. It can be one of the following schemes: PCM (1st-order + ! accurate) + ! PLM (2nd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) + +! === module MOM_grid === +! Parameters providing information about the lateral grid. + +! === module MOM_state_initialization === +INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False + ! If true, initialize the layer thicknesses, temperatures, and salinities from a + ! Z-space file on a latitude-longitude grid. + +! === module MOM_initialize_layers_from_Z === +TEMP_SALT_Z_INIT_FILE = "" ! default = "temp_salt_z.nc" + ! The name of the z-space input file used to initialize + ! temperatures (T) and salinities (S). If T and S are not + ! in the same file, TEMP_Z_INIT_FILE and SALT_Z_INIT_FILE + ! must be set. +TEMP_Z_INIT_FILE = "woa18_decav_t00_01.nc" ! default = "" + ! The name of the z-space input file used to initialize + ! temperatures, only. +SALT_Z_INIT_FILE = "woa18_decav_s00_01.nc" ! default = "" + ! The name of the z-space input file used to initialize + ! temperatures, only. +Z_INIT_FILE_PTEMP_VAR = "t_an" ! default = "ptemp" + ! The name of the potential temperature variable in + ! TEMP_Z_INIT_FILE. +Z_INIT_FILE_SALT_VAR = "s_an" ! default = "salt" + ! The name of the salinity variable in + ! SALT_Z_INIT_FILE. +Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False + ! If True, then remap straight to model coordinate from file. + +! === module MOM_diag_mediator === + +! === module MOM_MEKE === +USE_MEKE = True ! [Boolean] default = False + ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy + ! kinetic energy budget. + +! === module MOM_lateral_mixing_coeffs === +USE_VARIABLE_MIXING = True ! [Boolean] default = False + ! If true, the variable mixing code will be called. This allows diagnostics to + ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or + ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter + ! file. +! === module MOM_set_visc === +CHANNEL_DRAG = True ! [Boolean] default = False + ! If true, the bottom drag is exerted directly on each layer proportional to the + ! fraction of the bottom it overlies. +HBBL = 10.0 ! [m] + ! The thickness of a bottom boundary layer with a viscosity of KVBBL if + ! BOTTOMDRAGLAW is not defined, or the thickness over which near-bottom + ! velocities are averaged for the drag law if BOTTOMDRAGLAW is defined but + ! LINEAR_DRAG is not. +KV = 1.0E-04 ! [m2 s-1] + ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 + ! m2 s-1, may be used. + +! === module MOM_continuity === + +! === module MOM_continuity_PPM === + +! === module MOM_CoriolisAdv === +CORIOLIS_SCHEME = "SADOURNY75_ENSTRO" ! default = "SADOURNY75_ENERGY" + ! CORIOLIS_SCHEME selects the discretization for the Coriolis terms. Valid + ! values are: + ! SADOURNY75_ENERGY - Sadourny, 1975; energy cons. + ! ARAKAWA_HSU90 - Arakawa & Hsu, 1990 + ! SADOURNY75_ENSTRO - Sadourny, 1975; enstrophy cons. + ! ARAKAWA_LAMB81 - Arakawa & Lamb, 1981; En. + Enst. + ! ARAKAWA_LAMB_BLEND - A blend of Arakawa & Lamb with + ! Arakawa & Hsu and Sadourny energy +BOUND_CORIOLIS = True ! [Boolean] default = False + ! If true, the Coriolis terms at u-points are bounded by the four estimates of + ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This + ! option would have no effect on the SADOURNY Coriolis scheme if it were + ! possible to use centered difference thickness fluxes. + +! === module MOM_PressureForce === + +! === module MOM_PressureForce_AFV === +MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False + ! If true, use mass weighting when interpolating T/S for integrals near the + ! bathymetry in AFV pressure gradient calculations. + +! === module MOM_hor_visc === +LAPLACIAN = True ! [Boolean] default = False + ! If true, use a Laplacian horizontal viscosity. +KH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 + ! The velocity scale which is multiplied by the grid spacing to calculate the + ! Laplacian viscosity. The final viscosity is the largest of this scaled + ! viscosity, the Smagorinsky and Leith viscosities, and KH. +KH_SIN_LAT = 2000.0 ! [m2 s-1] default = 0.0 + ! The amplitude of a latitudinally-dependent background viscosity of the form + ! KH_SIN_LAT*(SIN(LAT)**KH_PWR_OF_SINE). +SMAGORINSKY_KH = True ! [Boolean] default = False + ! If true, use a Smagorinsky nonlinear eddy viscosity. +SMAG_LAP_CONST = 0.15 ! [nondim] default = 0.0 + ! The nondimensional Laplacian Smagorinsky constant, often 0.15. +AH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 + ! The velocity scale which is multiplied by the cube of the grid spacing to + ! calculate the biharmonic viscosity. The final viscosity is the largest of this + ! scaled viscosity, the Smagorinsky and Leith viscosities, and AH. +SMAGORINSKY_AH = True ! [Boolean] default = False + ! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity. +SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 + ! The nondimensional biharmonic Smagorinsky constant, typically 0.015 - 0.06. +USE_LAND_MASK_FOR_HVISC = True ! [Boolean] default = False + ! If true, use Use the land mask for the computation of thicknesses at velocity + ! locations. This eliminates the dependence on arbitrary values over land or + ! outside of the domain. + +! === module MOM_vert_friction === +HMIX_FIXED = 0.5 ! [m] + ! The prescribed depth over which the near-surface viscosity and diffusivity are + ! elevated when the bulk mixed layer is not used. +MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 + ! The maximum velocity allowed before the velocity components are truncated. + +! === module MOM_barotropic === +BOUND_BT_CORRECTION = True ! [Boolean] default = False + ! If true, the corrective pseudo mass-fluxes into the barotropic solver are + ! limited to values that require less than maxCFL_BT_cont to be accommodated. +BT_PROJECT_VELOCITY = True ! [Boolean] default = False + ! If true, step the barotropic velocity first and project out the velocity + ! tendency by 1+BEBT when calculating the transport. The default (false) is to + ! use a predictor continuity step to find the pressure field, and then to do a + ! corrector continuity step using a weighted average of the old and new + ! velocities, with weights of (1-BEBT) and BEBT. +DYNAMIC_SURFACE_PRESSURE = False ! [Boolean] default = False + ! If true, add a dynamic pressure due to a viscous ice shelf, for instance. +BEBT = 0.2 ! [nondim] default = 0.1 + ! BEBT determines whether the barotropic time stepping uses the forward-backward + ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range + ! from 0 (for a forward-backward treatment of nonrotating gravity waves) to 1 + ! (for a backward Euler treatment). In practice, BEBT must be greater than about + ! 0.05. +DTBT = -0.9 ! [s or nondim] default = -0.98 + ! The barotropic time step, in s. DTBT is only used with the split explicit time + ! stepping. To set the time step automatically based the maximum stable value + ! use 0, or a negative value gives the fraction of the stable value. Setting + ! DTBT to 0 is the same as setting it to -0.98. The value of DTBT that will + ! actually be used is an integer fraction of DT, rounding down. + +! === module MOM_mixed_layer_restrat === +MIXEDLAYER_RESTRAT = False ! [Boolean] default = False + ! If true, a density-gradient dependent re-stratifying flow is imposed in the + ! mixed layer. Can be used in ALE mode without restriction but in layer mode can + ! only be used if BULKMIXEDLAYER is true. +FOX_KEMPER_ML_RESTRAT_COEF = 60.0 ! [nondim] default = 0.0 + ! A nondimensional coefficient that is proportional to the ratio of the + ! deformation radius to the dominant lengthscale of the submesoscale mixed layer + ! instabilities, times the minimum of the ratio of the mesoscale eddy kinetic + ! energy to the large-scale geostrophic kinetic energy or 1 plus the square of + ! the grid spacing over the deformation radius, as detailed by Fox-Kemper et al. + ! (2010) +MLE_FRONT_LENGTH = 200.0 ! [m] default = 0.0 + ! If non-zero, is the frontal-length scale used to calculate the upscaling of + ! buoyancy gradients that is otherwise represented by the parameter + ! FOX_KEMPER_ML_RESTRAT_COEF. If MLE_FRONT_LENGTH is non-zero, it is recommended + ! to set FOX_KEMPER_ML_RESTRAT_COEF=1.0. +MLE_USE_PBL_MLD = True ! [Boolean] default = False + ! If true, the MLE parameterization will use the mixed-layer depth provided by + ! the active PBL parameterization. If false, MLE will estimate a MLD based on a + ! density difference with the surface using the parameter MLE_DENSITY_DIFF. +MLE_MLD_DECAY_TIME = 2.592E+06 ! [s] default = 0.0 + ! The time-scale for a running-mean filter applied to the mixed-layer depth used + ! in the MLE restratification parameterization. When the MLD deepens below the + ! current running-mean the running-mean is instantaneously set to the current + ! MLD. + +! === module MOM_diabatic_driver === +! The following parameters are used for diabatic processes. +ENERGETICS_SFC_PBL = True ! [Boolean] default = False + ! If true, use an implied energetics planetary boundary layer scheme to + ! determine the diffusivity and viscosity in the surface boundary layer. +EPBL_IS_ADDITIVE = False ! [Boolean] default = True + ! If true, the diffusivity from ePBL is added to all other diffusivities. + ! Otherwise, the larger of kappa-shear and ePBL diffusivities are used. + +! === module MOM_CVMix_KPP === +! This is the MOM wrapper to CVMix:KPP +! See http://cvmix.github.io/ + +! === module MOM_tidal_mixing === +! Vertical Tidal Mixing Parameterization + +! === module MOM_CVMix_conv === +! Parameterization of enhanced mixing due to convection via CVMix + +! === module MOM_set_diffusivity === + +! === module MOM_bkgnd_mixing === +! Adding static vertical background mixing coefficients +KD = 1.5E-05 ! [m2 s-1] default = 0.0 + ! The background diapycnal diffusivity of density in the interior. Zero or the + ! molecular value, ~1e-7 m2 s-1, may be used. +KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 + ! The minimum diapycnal diffusivity. +HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False + ! If true, use a latitude-dependent scaling for the near surface background + ! diffusivity, as described in Harrison & Hallberg, JPO 2008. + +! === module MOM_kappa_shear === +! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 +USE_JACKSON_PARAM = True ! [Boolean] default = False + ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing + ! parameterization. +MAX_RINO_IT = 25 ! [nondim] default = 50 + ! The maximum number of iterations that may be used to estimate the Richardson + ! number driven mixing. + +! === module MOM_CVMix_shear === +! Parameterization of shear-driven turbulence via CVMix (various options) + +! === module MOM_CVMix_ddiff === +! Parameterization of mixing due to double diffusion processes via CVMix + +! === module MOM_diabatic_aux === +! The following parameters are used for auxiliary diabatic processes. + +! === module MOM_energetic_PBL === +EPBL_USTAR_MIN = 1.45842E-18 ! [m s-1] + ! The (tiny) minimum friction velocity used within the ePBL code, derived from + ! OMEGA and ANGSTROM.. +USE_LA_LI2016 = @[MOM6_USE_LI2016] ! [nondim] default = False + ! A logical to use the Li et al. 2016 (submitted) formula to determine the + ! Langmuir number. +USE_WAVES = @[MOM6_USE_WAVES] ! [Boolean] default = False + ! If true, enables surface wave modules. + +! === module MOM_regularize_layers === + +! === module MOM_opacity === + +! === module MOM_tracer_advect === +TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" + ! The horizontal transport scheme for tracers: + ! PLM - Piecewise Linear Method + ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) + ! PPM - Piecewise Parabolic Method (Colella-Woodward) + +! === module MOM_tracer_hor_diff === +KHTR = 50.0 ! [m2 s-1] default = 0.0 + ! The background along-isopycnal tracer diffusivity. +CHECK_DIFFUSIVE_CFL = True ! [Boolean] default = False + ! If true, use enough iterations the diffusion to ensure that the diffusive + ! equivalent of the CFL limit is not violated. If false, always use the greater + ! of 1 or MAX_TR_DIFFUSION_CFL iteration. +MAX_TR_DIFFUSION_CFL = 2.0 ! [nondim] default = -1.0 + ! If positive, locally limit the along-isopycnal tracer diffusivity to keep the + ! diffusive CFL locally at or below this value. The number of diffusive + ! iterations is often this value or the next greater integer. + +! === module MOM_neutral_diffusion === +! This module implements neutral diffusion of tracers +USE_NEUTRAL_DIFFUSION = True ! [Boolean] default = False + ! If true, enables the neutral diffusion module. + +! === module MOM_sum_output === +MAXTRUNC = 1000 ! [truncations save_interval-1] default = 0 + ! The run will be stopped, and the day set to a very large value if the velocity + ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 + ! to stop if there is any truncation of velocities. + +! === module ocean_model_init === + +! === module MOM_surface_forcing === +OCEAN_SURFACE_STAGGER = "A" ! default = "C" + ! A case-insensitive character string to indicate the + ! staggering of the surface velocity field that is + ! returned to the coupler. Valid values include + ! 'A', 'B', or 'C'. + +MAX_P_SURF = 0.0 ! [Pa] default = -1.0 + ! The maximum surface pressure that can be exerted by the atmosphere and + ! floating sea-ice or ice shelves. This is needed because the FMS coupling + ! structure does not limit the water that can be frozen out of the ocean and the + ! ice-ocean heat fluxes are treated explicitly. No limit is applied if a + ! negative value is used. +WIND_STAGGER = "A" ! default = "C" + ! A case-insensitive character string to indicate the + ! staggering of the input wind stress field. Valid + ! values are 'A', 'B', or 'C'. +! === module MOM_restart === + +! === module MOM_file_parser === diff --git a/tests/rt.conf b/tests/rt.conf index f7d8d80f7c..f959766a3c 100644 --- a/tests/rt.conf +++ b/tests/rt.conf @@ -31,6 +31,11 @@ RUN | cpld_debug_noaero_p8 COMPILE | -DAPP=S2S -DCCPP_SUITES=FV3_GFS_v17_coupled_p8_sfcocn -DCMEPS_AOFLUX=ON | | fv3 | RUN | cpld_control_noaero_p8_agrid | | fv3 | +COMPILE | -DAPP=S2S -DCCPP_SUITES=FV3_GFS_v17_coupled_p8 | | fv3 | +RUN | cpld_control_c48 | - wcoss2.intel | fv3 | +RUN | cpld_warmstart_c48 | - wcoss2.intel | fv3 | +RUN | cpld_restart_c48 | - wcoss2.intel | | cpld_warmstart_c48 + ################################################################################################################################################################################### # ATM tests # ################################################################################################################################################################################### diff --git a/tests/tests/atmaero_control_p8 b/tests/tests/atmaero_control_p8 index 99e67ee7cb..a41830198a 100644 --- a/tests/tests/atmaero_control_p8 +++ b/tests/tests/atmaero_control_p8 @@ -182,7 +182,5 @@ export DOGP_LWSCAT=.true. export DOGP_SGS_CNV=.true. if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/atmaero_control_p8_rad b/tests/tests/atmaero_control_p8_rad index 82f51372ac..5475a74fe8 100644 --- a/tests/tests/atmaero_control_p8_rad +++ b/tests/tests/atmaero_control_p8_rad @@ -176,7 +176,5 @@ export DOGP_LWSCAT=.true. export DOGP_SGS_CNV=.true. if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/control_debug_p8 b/tests/tests/control_debug_p8 index 0beffdbcb3..c311f98c6f 100644 --- a/tests/tests/control_debug_p8 +++ b/tests/tests/control_debug_p8 @@ -129,7 +129,5 @@ export DOGP_LWSCAT=.true. export DOGP_SGS_CNV=.true. if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/control_decomp_p8 b/tests/tests/control_decomp_p8 index 6af33f2319..c53490b603 100644 --- a/tests/tests/control_decomp_p8 +++ b/tests/tests/control_decomp_p8 @@ -168,7 +168,5 @@ export DOGP_LWSCAT=.true. export DOGP_SGS_CNV=.true. if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/control_p8 b/tests/tests/control_p8 index fcfb9f2cef..f2203d0427 100644 --- a/tests/tests/control_p8 +++ b/tests/tests/control_p8 @@ -169,7 +169,5 @@ export DOGP_LWSCAT=.true. export DOGP_SGS_CNV=.true. if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/control_p8_lndp b/tests/tests/control_p8_lndp index a83ffa977e..8c6de2b658 100644 --- a/tests/tests/control_p8_lndp +++ b/tests/tests/control_p8_lndp @@ -147,7 +147,5 @@ export DOGP_LWSCAT=.true. export DOGP_SGS_CNV=.true. if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/control_p8_rrtmgp b/tests/tests/control_p8_rrtmgp index 0425e3c7eb..4ca3c32ead 100644 --- a/tests/tests/control_p8_rrtmgp +++ b/tests/tests/control_p8_rrtmgp @@ -169,7 +169,5 @@ export DOGP_LWSCAT=.true. export DOGP_SGS_CNV=.true. if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/cpld_2threads_p8 b/tests/tests/cpld_2threads_p8 index 4841ff3840..bbe8ab2f1a 100644 --- a/tests/tests/cpld_2threads_p8 +++ b/tests/tests/cpld_2threads_p8 @@ -85,7 +85,5 @@ export eps_imesh=2.5e-1 export FV3_RUN=cpld_control_run.IN if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/cpld_control_c48 b/tests/tests/cpld_control_c48 new file mode 100644 index 0000000000..d50667a783 --- /dev/null +++ b/tests/tests/cpld_control_c48 @@ -0,0 +1,139 @@ +# +# cpld_control_c48 test +# +export TEST_DESCR="Fully coupled FV3-CCPP-MOM6-CICE-CMEPS system - C48MX500" + +export CNTL_DIR="cpld_control_c48" + +export LIST_FILES="sfcf024.tile1.nc \ + sfcf024.tile2.nc \ + sfcf024.tile3.nc \ + sfcf024.tile4.nc \ + sfcf024.tile5.nc \ + sfcf024.tile6.nc \ + atmf024.tile1.nc \ + atmf024.tile2.nc \ + atmf024.tile3.nc \ + atmf024.tile4.nc \ + atmf024.tile5.nc \ + atmf024.tile6.nc \ + RESTART/coupler.res \ + RESTART/fv_core.res.nc \ + RESTART/fv_core.res.tile1.nc \ + RESTART/fv_core.res.tile2.nc \ + RESTART/fv_core.res.tile3.nc \ + RESTART/fv_core.res.tile4.nc \ + RESTART/fv_core.res.tile5.nc \ + RESTART/fv_core.res.tile6.nc \ + RESTART/fv_srf_wnd.res.tile1.nc \ + RESTART/fv_srf_wnd.res.tile2.nc \ + RESTART/fv_srf_wnd.res.tile3.nc \ + RESTART/fv_srf_wnd.res.tile4.nc \ + RESTART/fv_srf_wnd.res.tile5.nc \ + RESTART/fv_srf_wnd.res.tile6.nc \ + RESTART/fv_tracer.res.tile1.nc \ + RESTART/fv_tracer.res.tile2.nc \ + RESTART/fv_tracer.res.tile3.nc \ + RESTART/fv_tracer.res.tile4.nc \ + RESTART/fv_tracer.res.tile5.nc \ + RESTART/fv_tracer.res.tile6.nc \ + RESTART/phy_data.tile1.nc \ + RESTART/phy_data.tile2.nc \ + RESTART/phy_data.tile3.nc \ + RESTART/phy_data.tile4.nc \ + RESTART/phy_data.tile5.nc \ + RESTART/phy_data.tile6.nc \ + RESTART/sfc_data.tile1.nc \ + RESTART/sfc_data.tile2.nc \ + RESTART/sfc_data.tile3.nc \ + RESTART/sfc_data.tile4.nc \ + RESTART/sfc_data.tile5.nc \ + RESTART/sfc_data.tile6.nc \ + RESTART/MOM.res.nc \ + RESTART/iced.2021-03-23-21600.nc \ + RESTART/ufs.cpld.cpl.r.2021-03-23-21600.nc" + +export_fv3 +export_cpl + +export RESTART_N=12 +export RESTART_INTERVAL="${RESTART_N} -1" + +export TASKS=$TASKS_cpl_c48 +export INPES=$INPES_cpl_c48 +export JNPES=$JNPES_cpl_c48 +export THRD=$THRD_cpl_c48 +export WRTTASK_PER_GROUP=$WPG_cpl_c48 +export OUTPUT_GRID='cubed_sphere_grid' + +export WAV_tasks=0 +export CHM_tasks=0 +OCN_tasks=$OCN_tasks_cpl_c48 +ICE_tasks=$ICE_tasks_cpl_c48 + +# atm/ocn/ice resolution +export ATMRES=C48 +export NPX=49 +export NPY=49 +export IMO=192 +export JMO=94 +export ATMTILESIZE=`expr $NPX - 1` + +export OCNRES=500 +export ICERES=5.00 +export NX_GLB=72 +export NY_GLB=35 +export NPROC_ICE=$ICE_tasks +export CICE_DECOMP=slenderX1 +export BLCKX=`expr $NX_GLB / $NPROC_ICE` +export BLCKY=$NY_GLB + +# set component and coupling timesteps +export DT_ATMOS=1200 +export DT_CICE=${DT_ATMOS} +export DT_DYNAM_MOM6=3600 +export DT_THERM_MOM6=3600 + +# nems.configure +export coupling_interval_slow_sec=${DT_THERM_MOM6} +export coupling_interval_fast_sec=${DT_ATMOS} + +# resolution dependent files +export MOM_INPUT=MOM_input_template_${OCNRES} +export MESHOCN_ICE=mesh.mx${OCNRES}.nc +export CICEGRID=grid_cice_NEMS_mx${OCNRES}.nc +export CICEMASK=kmtu_cice_NEMS_mx${OCNRES}.nc +export CHLCLIM='' +export FRUNOFF='' +export MOM6_RIVER_RUNOFF=False +export MOM6_RESTART_SETTING=r + +export FNALBC="'C48.snowfree_albedo.tileX.nc'" +export FNALBC2="'C48.facsf.tileX.nc'" +export FNTG3C="'C48.substrate_temperature.tileX.nc'" +export FNVEGC="'C48.vegetation_greenness.tileX.nc'" +export FNVETC="'C48.vegetation_type.tileX.nc'" +export FNSOTC="'C48.soil_type.tileX.nc'" +export FNVMNC="'C48.vegetation_greenness.tileX.nc'" +export FNVMXC="'C48.vegetation_greenness.tileX.nc'" +export FNSLPC="'C48.slope_type.tileX.nc'" +export FNABSC="'C48.maximum_snow_albedo.tileX.nc'" +export FNSMCC="'global_soilmgldas.statsgo.t92.192.94.grb'" +export FNMSKH="'global_slmask.t62.192.94.grb'" + +# resolution dependent setting +export CDMBWD=${CDMBWD_c48} +export DT_INNER=${DT_ATMOS} + +# no aero, no waves +export CPLCHM=.false. +export CPLWAV=.false. +export CPLWAV2ATM=.false. +export MOM6_USE_WAVES=False +export eps_imesh=4.0e-1 + +export DIAG_TABLE=diag_table_template +export FIELD_TABLE=field_table_thompson_noaero_tke +export NEMS_CONFIGURE=nems.configure.cpld_noaero_nowave.IN + +export FV3_RUN=cpld_control_run.IN diff --git a/tests/tests/cpld_control_ciceC_p8 b/tests/tests/cpld_control_ciceC_p8 index e8eab0592d..25aa068185 100644 --- a/tests/tests/cpld_control_ciceC_p8 +++ b/tests/tests/cpld_control_ciceC_p8 @@ -85,7 +85,5 @@ export GRIDICE=C export FV3_RUN=cpld_control_run.IN if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/cpld_control_noaero_p8 b/tests/tests/cpld_control_noaero_p8 index 31b2582323..881f86f111 100644 --- a/tests/tests/cpld_control_noaero_p8 +++ b/tests/tests/cpld_control_noaero_p8 @@ -87,7 +87,5 @@ export NEMS_CONFIGURE=nems.configure.cpld_noaero.IN export FV3_RUN=cpld_control_run.IN if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/cpld_control_noaero_p8_agrid b/tests/tests/cpld_control_noaero_p8_agrid index c2f3195687..4f7749d6aa 100644 --- a/tests/tests/cpld_control_noaero_p8_agrid +++ b/tests/tests/cpld_control_noaero_p8_agrid @@ -97,7 +97,5 @@ export NEMS_CONFIGURE=nems.configure.cpld_agrid.IN export FV3_RUN=cpld_control_run.IN if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/cpld_control_nowave_noaero_p8 b/tests/tests/cpld_control_nowave_noaero_p8 index 9a8998c504..4d29a77574 100644 --- a/tests/tests/cpld_control_nowave_noaero_p8 +++ b/tests/tests/cpld_control_nowave_noaero_p8 @@ -105,7 +105,5 @@ export NEMS_CONFIGURE=nems.configure.cpld_noaero_nowave.IN export FV3_RUN=cpld_control_run.IN if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/cpld_control_p8 b/tests/tests/cpld_control_p8 index 9bdc3e75fa..4ad14d179d 100644 --- a/tests/tests/cpld_control_p8 +++ b/tests/tests/cpld_control_p8 @@ -83,7 +83,5 @@ export eps_imesh=2.5e-1 export FV3_RUN=cpld_control_run.IN if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/cpld_debug_noaero_p8 b/tests/tests/cpld_debug_noaero_p8 index 3328372837..3c4460f83e 100644 --- a/tests/tests/cpld_debug_noaero_p8 +++ b/tests/tests/cpld_debug_noaero_p8 @@ -77,7 +77,5 @@ export NEMS_CONFIGURE=nems.configure.cpld_noaero.IN export FV3_RUN=cpld_control_run.IN if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/cpld_debug_p8 b/tests/tests/cpld_debug_p8 index 6a8f25f6b1..68056f441f 100644 --- a/tests/tests/cpld_debug_p8 +++ b/tests/tests/cpld_debug_p8 @@ -73,7 +73,5 @@ export eps_imesh=2.5e-1 export FV3_RUN=cpld_control_run.IN if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/cpld_decomp_p8 b/tests/tests/cpld_decomp_p8 index a4075fa344..97182b8d52 100644 --- a/tests/tests/cpld_decomp_p8 +++ b/tests/tests/cpld_decomp_p8 @@ -85,7 +85,5 @@ export eps_imesh=2.5e-1 export FV3_RUN=cpld_control_run.IN if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/cpld_mpi_p8 b/tests/tests/cpld_mpi_p8 index c56fecb67b..8657a7b757 100644 --- a/tests/tests/cpld_mpi_p8 +++ b/tests/tests/cpld_mpi_p8 @@ -85,7 +85,5 @@ export eps_imesh=2.5e-1 export FV3_RUN=cpld_control_run.IN if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/cpld_restart_c48 b/tests/tests/cpld_restart_c48 new file mode 100644 index 0000000000..3f36b090f4 --- /dev/null +++ b/tests/tests/cpld_restart_c48 @@ -0,0 +1,170 @@ +# +# cpld_restart_c48 test +# +export TEST_DESCR="Fully coupled FV3-CCPP-MOM6-CICE-CMEPS system - C48MX500 restart test" + +export CNTL_DIR="cpld_warmstart_c48" + +export LIST_FILES="sfcf006.tile1.nc \ + sfcf006.tile2.nc \ + sfcf006.tile3.nc \ + sfcf006.tile4.nc \ + sfcf006.tile5.nc \ + sfcf006.tile6.nc \ + atmf006.tile1.nc \ + atmf006.tile2.nc \ + atmf006.tile3.nc \ + atmf006.tile4.nc \ + atmf006.tile5.nc \ + atmf006.tile6.nc \ + RESTART/coupler.res \ + RESTART/fv_core.res.nc \ + RESTART/fv_core.res.tile1.nc \ + RESTART/fv_core.res.tile2.nc \ + RESTART/fv_core.res.tile3.nc \ + RESTART/fv_core.res.tile4.nc \ + RESTART/fv_core.res.tile5.nc \ + RESTART/fv_core.res.tile6.nc \ + RESTART/fv_srf_wnd.res.tile1.nc \ + RESTART/fv_srf_wnd.res.tile2.nc \ + RESTART/fv_srf_wnd.res.tile3.nc \ + RESTART/fv_srf_wnd.res.tile4.nc \ + RESTART/fv_srf_wnd.res.tile5.nc \ + RESTART/fv_srf_wnd.res.tile6.nc \ + RESTART/fv_tracer.res.tile1.nc \ + RESTART/fv_tracer.res.tile2.nc \ + RESTART/fv_tracer.res.tile3.nc \ + RESTART/fv_tracer.res.tile4.nc \ + RESTART/fv_tracer.res.tile5.nc \ + RESTART/fv_tracer.res.tile6.nc \ + RESTART/phy_data.tile1.nc \ + RESTART/phy_data.tile2.nc \ + RESTART/phy_data.tile3.nc \ + RESTART/phy_data.tile4.nc \ + RESTART/phy_data.tile5.nc \ + RESTART/phy_data.tile6.nc \ + RESTART/sfc_data.tile1.nc \ + RESTART/sfc_data.tile2.nc \ + RESTART/sfc_data.tile3.nc \ + RESTART/sfc_data.tile4.nc \ + RESTART/sfc_data.tile5.nc \ + RESTART/sfc_data.tile6.nc \ + RESTART/MOM.res.nc \ + RESTART/iced.2021-03-23-43200.nc \ + RESTART/ufs.cpld.cpl.r.2021-03-23-43200.nc" + +export_fv3 +export_cpl + +export SYEAR=2021 +export SMONTH=03 +export SDAY=23 +export SHOUR=06 +export SECS=`expr $SHOUR \* 3600` + +export DAYS=0.25 +export FHMAX=6 +export FHROT=3 + +export RESTART_N=1 +export RESTART_INTERVAL="${RESTART_N} -1" +export OUTPUT_FH="3 -1" +export FHZERO=3 + +export RESTART_FILE_PREFIX="${SYEAR}${SMONTH}${SDAY}.$(printf "%02d" $(( ${FHROT} + ${SHOUR} )))0000" +export RESTART_FILE_SUFFIX_HRS="${SYEAR}-${SMONTH}-${SDAY}-$(printf "%02d" $(( ${FHROT} + ${SHOUR})))" +export RESTART_FILE_SUFFIX_SECS="${SYEAR}-${SMONTH}-${SDAY}-$(printf "%05d" $(( (${FHROT}+ ${SHOUR})*3600 )))" + +export TASKS=$TASKS_cpl_c48 +export INPES=$INPES_cpl_c48 +export JNPES=$JNPES_cpl_c48 +export THRD=$THRD_cpl_c48 +export WRTTASK_PER_GROUP=$WPG_cpl_c48 +export OUTPUT_GRID='cubed_sphere_grid' + +export WAV_tasks=0 +export CHM_tasks=0 +OCN_tasks=$OCN_tasks_cpl_c48 +ICE_tasks=$ICE_tasks_cpl_c48 + +# atm/ocn/ice resolution +export ATMRES=C48 +export NPX=49 +export NPY=49 +export IMO=192 +export JMO=94 +export ATMTILESIZE=`expr $NPX - 1` + +export OCNRES=500 +export ICERES=5.00 +export NX_GLB=72 +export NY_GLB=35 +export NPROC_ICE=$ICE_tasks +export CICE_DECOMP=slenderX1 +export BLCKX=`expr $NX_GLB / $NPROC_ICE` +export BLCKY=$NY_GLB + +# set component and coupling timesteps +export DT_ATMOS=1200 +export DT_CICE=${DT_ATMOS} +export DT_DYNAM_MOM6=3600 +export DT_THERM_MOM6=3600 + +# nems.configure +export coupling_interval_slow_sec=${DT_THERM_MOM6} +export coupling_interval_fast_sec=${DT_ATMOS} + +# resolution dependent files +export MOM_INPUT=MOM_input_template_${OCNRES} +export MESHOCN_ICE=mesh.mx${OCNRES}.nc +export CICEGRID=grid_cice_NEMS_mx${OCNRES}.nc +export CICEMASK=kmtu_cice_NEMS_mx${OCNRES}.nc +export CHLCLIM='' +export FRUNOFF='' +export MOM6_RIVER_RUNOFF=False + +export FNALBC="'C48.snowfree_albedo.tileX.nc'" +export FNALBC2="'C48.facsf.tileX.nc'" +export FNTG3C="'C48.substrate_temperature.tileX.nc'" +export FNVEGC="'C48.vegetation_greenness.tileX.nc'" +export FNVETC="'C48.vegetation_type.tileX.nc'" +export FNSOTC="'C48.soil_type.tileX.nc'" +export FNVMNC="'C48.vegetation_greenness.tileX.nc'" +export FNVMXC="'C48.vegetation_greenness.tileX.nc'" +export FNSLPC="'C48.slope_type.tileX.nc'" +export FNABSC="'C48.maximum_snow_albedo.tileX.nc'" +export FNSMCC="'global_soilmgldas.statsgo.t92.192.94.grb'" +export FNMSKH="'global_slmask.t62.192.94.grb'" + +# resolution dependent setting +export CDMBWD=${CDMBWD_c48} +export DT_INNER=${DT_ATMOS} + +# ATM warm start +export WARM_START=.true. +export MAKE_NH=.false. +export NA_INIT=0 +export EXTERNAL_IC=.false. +export NGGPS_IC=.false. +export MOUNTAIN=.true. + +# ICE warm start +export CICERUNTYPE=continue +export RUNTYPE=continue +export USE_RESTART_TIME=.true. + +# MOM6 warm start +export MOM6_RESTART_SETTING=r + +# no aero, no waves +export CPLCHM=.false. +export CPLWAV=.false. +export CPLWAV2ATM=.false. +export MOM6_USE_WAVES=False +export eps_imesh=4.0e-1 + +export DIAG_TABLE=diag_table_template +export FIELD_TABLE=field_table_thompson_noaero_tke +export NEMS_CONFIGURE=nems.configure.cpld_noaero_nowave.IN + +export FV3_RUN=cpld_control_run.IN diff --git a/tests/tests/cpld_restart_p8 b/tests/tests/cpld_restart_p8 index 317305035f..4f3714f6ed 100644 --- a/tests/tests/cpld_restart_p8 +++ b/tests/tests/cpld_restart_p8 @@ -96,7 +96,5 @@ export eps_imesh=2.5e-1 export FV3_RUN=cpld_control_run.IN if [[ $MACHINE_ID = cheyenne.* ]]; then - TPN=18 - fi diff --git a/tests/tests/cpld_warmstart_c48 b/tests/tests/cpld_warmstart_c48 new file mode 100644 index 0000000000..7c9d6a6de2 --- /dev/null +++ b/tests/tests/cpld_warmstart_c48 @@ -0,0 +1,166 @@ +# +# cpld_warmstart_c48 test +# +export TEST_DESCR="Fully coupled FV3-CCPP-MOM6-CICE-CMEPS system - C48MX500 start from model initialization" + +export CNTL_DIR="cpld_warmstart_c48" + +export LIST_FILES="sfcf006.tile1.nc \ + sfcf006.tile2.nc \ + sfcf006.tile3.nc \ + sfcf006.tile4.nc \ + sfcf006.tile5.nc \ + sfcf006.tile6.nc \ + atmf006.tile1.nc \ + atmf006.tile2.nc \ + atmf006.tile3.nc \ + atmf006.tile4.nc \ + atmf006.tile5.nc \ + atmf006.tile6.nc \ + RESTART/coupler.res \ + RESTART/fv_core.res.nc \ + RESTART/fv_core.res.tile1.nc \ + RESTART/fv_core.res.tile2.nc \ + RESTART/fv_core.res.tile3.nc \ + RESTART/fv_core.res.tile4.nc \ + RESTART/fv_core.res.tile5.nc \ + RESTART/fv_core.res.tile6.nc \ + RESTART/fv_srf_wnd.res.tile1.nc \ + RESTART/fv_srf_wnd.res.tile2.nc \ + RESTART/fv_srf_wnd.res.tile3.nc \ + RESTART/fv_srf_wnd.res.tile4.nc \ + RESTART/fv_srf_wnd.res.tile5.nc \ + RESTART/fv_srf_wnd.res.tile6.nc \ + RESTART/fv_tracer.res.tile1.nc \ + RESTART/fv_tracer.res.tile2.nc \ + RESTART/fv_tracer.res.tile3.nc \ + RESTART/fv_tracer.res.tile4.nc \ + RESTART/fv_tracer.res.tile5.nc \ + RESTART/fv_tracer.res.tile6.nc \ + RESTART/phy_data.tile1.nc \ + RESTART/phy_data.tile2.nc \ + RESTART/phy_data.tile3.nc \ + RESTART/phy_data.tile4.nc \ + RESTART/phy_data.tile5.nc \ + RESTART/phy_data.tile6.nc \ + RESTART/sfc_data.tile1.nc \ + RESTART/sfc_data.tile2.nc \ + RESTART/sfc_data.tile3.nc \ + RESTART/sfc_data.tile4.nc \ + RESTART/sfc_data.tile5.nc \ + RESTART/sfc_data.tile6.nc \ + RESTART/MOM.res.nc \ + RESTART/iced.2021-03-23-43200.nc \ + RESTART/ufs.cpld.cpl.r.2021-03-23-43200.nc" + +export_fv3 +export_cpl + +export SYEAR=2021 +export SMONTH=03 +export SDAY=23 +export SHOUR=06 +export SECS=`expr $SHOUR \* 3600` + +export DAYS=0.25 +export FHMAX=6 + +export FHROT=0 +export RESTART_N=1 +export RESTART_INTERVAL="${RESTART_N} -1" +export OUTPUT_FH="3 -1" +export FHZERO=3 + +export TASKS=$TASKS_cpl_c48 +export INPES=$INPES_cpl_c48 +export JNPES=$JNPES_cpl_c48 +export THRD=$THRD_cpl_c48 +export WRTTASK_PER_GROUP=$WPG_cpl_c48 +export OUTPUT_GRID='cubed_sphere_grid' + +export WAV_tasks=0 +export CHM_tasks=0 +OCN_tasks=$OCN_tasks_cpl_c48 +ICE_tasks=$ICE_tasks_cpl_c48 + +# atm/ocn/ice resolution +export ATMRES=C48 +export NPX=49 +export NPY=49 +export IMO=192 +export JMO=94 +export ATMTILESIZE=`expr $NPX - 1` + +export OCNRES=500 +export ICERES=5.00 +export NX_GLB=72 +export NY_GLB=35 +export NPROC_ICE=$ICE_tasks +export CICE_DECOMP=slenderX1 +export BLCKX=`expr $NX_GLB / $NPROC_ICE` +export BLCKY=$NY_GLB + +# set component and coupling timesteps +export DT_ATMOS=1200 +export DT_CICE=${DT_ATMOS} +export DT_DYNAM_MOM6=3600 +export DT_THERM_MOM6=3600 + +# nems.configure +export coupling_interval_slow_sec=${DT_THERM_MOM6} +export coupling_interval_fast_sec=${DT_ATMOS} + +# resolution dependent files +export MOM_INPUT=MOM_input_template_${OCNRES} +export MESHOCN_ICE=mesh.mx${OCNRES}.nc +export CICEGRID=grid_cice_NEMS_mx${OCNRES}.nc +export CICEMASK=kmtu_cice_NEMS_mx${OCNRES}.nc +export CHLCLIM='' +export FRUNOFF='' +export MOM6_RIVER_RUNOFF=False + +export FNALBC="'C48.snowfree_albedo.tileX.nc'" +export FNALBC2="'C48.facsf.tileX.nc'" +export FNTG3C="'C48.substrate_temperature.tileX.nc'" +export FNVEGC="'C48.vegetation_greenness.tileX.nc'" +export FNVETC="'C48.vegetation_type.tileX.nc'" +export FNSOTC="'C48.soil_type.tileX.nc'" +export FNVMNC="'C48.vegetation_greenness.tileX.nc'" +export FNVMXC="'C48.vegetation_greenness.tileX.nc'" +export FNSLPC="'C48.slope_type.tileX.nc'" +export FNABSC="'C48.maximum_snow_albedo.tileX.nc'" +export FNSMCC="'global_soilmgldas.statsgo.t92.192.94.grb'" +export FNMSKH="'global_slmask.t62.192.94.grb'" + +# resolution dependent setting +export CDMBWD=${CDMBWD_c48} +export DT_INNER=${DT_ATMOS} + +# ATM warm start +export WARM_START=.true. +export MAKE_NH=.false. +export NA_INIT=0 +export EXTERNAL_IC=.false. +export NGGPS_IC=.false. +export MOUNTAIN=.true. + +# ICE warm start +export CICERUNTYPE=continue +export RUNTYPE=continue +export USE_RESTART_TIME=.true. + +# MOM6 warm start +export MOM6_RESTART_SETTING=r + +# no aero, no waves +export CPLCHM=.false. +export CPLWAV=.false. +export CPLWAV2ATM=.false. +export MOM6_USE_WAVES=False +export eps_imesh=4.0e-1 + +export DIAG_TABLE=diag_table_template +export FIELD_TABLE=field_table_thompson_noaero_tke +export NEMS_CONFIGURE=nems.configure.cpld_noaero_nowave.IN + +export FV3_RUN=cpld_control_run.IN