diff --git a/.gitmodules b/.gitmodules index ab72b60a64..68cbce0ce3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,9 @@ [submodule "FV3"] path = FV3 - url = https://github.com/NOAA-EMC/fv3atm - branch = develop + #url = https://github.com/NOAA-EMC/fv3atm + #branch = develop + url = https://github.com/DeniseWorthen/fv3atm + branch = feature/ultralow [submodule "WW3"] path = WW3 url = https://github.com/NOAA-EMC/WW3 diff --git a/FV3 b/FV3 index 1648e176fa..424a4d9047 160000 --- a/FV3 +++ b/FV3 @@ -1 +1 @@ -Subproject commit 1648e176fa869d0ca9ce9ea5822b3594afd8c353 +Subproject commit 424a4d904771d3d82d5c9d02d266224472df0488 diff --git a/tests/fv3_conf/cpld_control_run.IN b/tests/fv3_conf/cpld_control_run.IN index 8b0c355d66..5c64d6d0dc 100644 --- a/tests/fv3_conf/cpld_control_run.IN +++ b/tests/fv3_conf/cpld_control_run.IN @@ -26,6 +26,10 @@ else 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} + elif [[ $ATMRES == C12 ]]; then + FV3_IC=@[INPUTDATA_ROOT]/${FV3_DIR}/INPUT_L41_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 if [ "$V2_SFC_FILE" = "true" ]; then FV3_IC=@[INPUTDATA_ROOT]/${FV3_DIR}/INPUT_L127_mx${OCNRES}_v2_sfc @@ -95,7 +99,9 @@ if [ $WARM_START = .false. ]; then cp ${ICE_IC}/cice.mx@[OCNRES].${SYEAR}${SMONTH}${SDAY}${SHOUR}.warmstart.nc ./cice.warmstart.nc else cp ${MOM_IC}/MOM6_IC_TS_${SYEAR}${SMONTH}${SDAY}${SHOUR}.nc ./INPUT/MOM6_IC_TS.nc - cp ${ICE_IC}/${OCNRES}/cice_model_@[ICERES].cpc.res_${SYEAR}${SMONTH}${SDAY}.nc ./cice_model.res.nc + ####### FIXME ####### + # non-valid file, just to get scripting to work; ice_in will set CICE_IC to "default" IC for now + cp ${ICE_IC}/invalid.nc ./cice_model.res.nc fi fi fi @@ -187,9 +193,11 @@ if [ $IAER = 1011 ]; then cp @[INPUTDATA_ROOT]/FV3_input_data_INCCN_aeroclim/aer_data/LUTS/optics_SU.v1_3.dat optics_SU.dat fi -cp @[INPUTDATA_ROOT]/FV3_input_data/ugwp_c384_tau.nc ./ugwp_limb_tau.nc -cp @[INPUTDATA_ROOT]/${FV3_DIR}/INPUT_L127_gfsv17/oro_data_ls* ./INPUT -cp @[INPUTDATA_ROOT]/${FV3_DIR}/INPUT_L127_gfsv17/oro_data_ss* ./INPUT +if [[ $ATMRES != C12 ]]; then + cp @[INPUTDATA_ROOT]/FV3_input_data/ugwp_c384_tau.nc ./ugwp_limb_tau.nc + cp @[INPUTDATA_ROOT]/${FV3_DIR}/INPUT_L127_gfsv17/oro_data_ls* ./INPUT + cp @[INPUTDATA_ROOT]/${FV3_DIR}/INPUT_L127_gfsv17/oro_data_ss* ./INPUT +fi if [ $IMP_PHYSICS = 8 ]; then cp @[INPUTDATA_ROOT]/FV3_fix/CCN_ACTIVATE.BIN CCN_ACTIVATE.BIN diff --git a/tests/parm/MOM_input_900.IN b/tests/parm/MOM_input_900.IN new file mode 100644 index 0000000000..202d243548 --- /dev/null +++ b/tests/parm/MOM_input_900.IN @@ -0,0 +1,646 @@ +! 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 + ! 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_verticalGrid === +! Parameters providing information about the vertical grid. +NK = 25 ! [nondim] + ! The number of model layers. + +! === 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. + ! benchmark - use the benchmark test case topography. + ! Neverland - use the Neverland 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 = "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_tracer_registry === + +! === module MOM_EOS === +DTFREEZE_DP = -7.75E-08 ! [deg C Pa-1] default = 0.0 + ! When TFREEZE_FORM=LINEAR, + ! this is the derivative of the freezing potential + ! temperature with pressure. + +! === module MOM_restart === +!RESTARTFILE = "MOM.res.small.nc" +!RESTARTFILE = "./INPUT/MOM.res.nc" +RESTART_CHECKSUMS_REQUIRED = .false. +! === module MOM_tracer_flow_control === + +! === module MOM_coord_initialization === +COORD_CONFIG = "file" ! + ! 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* - stetched geopotential z* + ! SIGMA_SHELF_ZSTAR - stetched 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 = "MOM6_IC_TS.nc" ! 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. +Z_INIT_FILE_PTEMP_VAR = "temp" ! default = "ptemp" + ! The name of the potential temperature variable in + ! TEMP_Z_INIT_FILE. +Z_INIT_FILE_SALT_VAR = "salt" ! 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 latidutinally-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. Default is False in order to + ! maintain answers with legacy experiments but should be changed to True + ! for new experiments. + +! === 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 tendancy 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_thickness_diffuse === + +! === 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_diag_to_Z === + +! === 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_entrain_diffusive === + +! === module MOM_set_diffusivity === + +! === module MOM_bkgnd_mixing === +! Adding static vertical background mixing coefficients +KD = 1.5E-05 ! [m2 s-1] + ! 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 = 1.5E-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. +WAVE_METHOD = "SURFACE_BANDS" ! default = "EMPTY" + ! Choice of wave method, valid options include: + ! TEST_PROFILE - Prescribed from surface Stokes drift + ! and a decay wavelength. + ! SURFACE_BANDS - Computed from multiple surface values + ! and decay wavelengths. + ! DHH85 - Uses Donelan et al. 1985 empirical + ! wave spectrum with prescribed values. + ! LF17 - Infers Stokes drift profile from wind + ! speed following Li and Fox-Kemper 2017. +SURFBAND_SOURCE = "COUPLER" ! default = "EMPTY" + ! Choice of SURFACE_BANDS data mode, valid options include: + ! DATAOVERRIDE - Read from NetCDF using FMS DataOverride. + ! COUPLER - Look for variables from coupler pass + ! INPUT - Testing with fixed values. +STK_BAND_COUPLER = 3 ! default = 1 + ! STK_BAND_COUPLER is the number of Stokes drift bands in the coupler. This has + ! to be consistent with the number of Stokes drift bands in WW3, or the model + ! will fail. +SURFBAND_WAVENUMBERS = 0.04, 0.11, 0.3305 ! [rad/m] default = 0.12566 + ! Central wavenumbers for surface Stokes drift bands. +EPBL_LANGMUIR_SCHEME = "ADDITIVE" ! default = "NONE" + ! EPBL_LANGMUIR_SCHEME selects the method for including Langmuir turbulence. + ! Valid values are: + ! NONE - Do not do any extra mixing due to Langmuir turbulence + ! RESCALE - Use a multiplicative rescaling of mstar to account for Langmuir + ! turbulence + ! ADDITIVE - Add a Langmuir turblence contribution to mstar to other + ! contributions +LT_ENHANCE_COEF = 0.044 ! [nondim] default = 0.447 + ! Coefficient for Langmuir enhancement of mstar +LT_ENHANCE_EXP = -1.5 ! [nondim] default = -1.33 + ! Exponent for Langmuir enhancementt of mstar +LT_MOD_LAC1 = 0.0 ! [nondim] default = -0.87 + ! Coefficient for modification of Langmuir number due to MLD approaching Ekman + ! depth. +LT_MOD_LAC4 = 0.0 ! [nondim] default = 0.95 + ! Coefficient for modification of Langmuir number due to ratio of Ekman to + ! stable Obukhov depth. +LT_MOD_LAC5 = 0.22 ! [nondim] default = 0.95 + ! Coefficient for modification of Langmuir number due to ratio of Ekman to + ! unstable Obukhov depth. + +! === 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 === + +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'. +! === module MOM_surface_forcing === +BUOY_CONFIG = "file" ! + ! The character string that indicates how buoyancy forcing + ! is specified. Valid options include (file), (zero), + ! (linear), (USER), (BFB) and (NONE). +ARCHAIC_OMIP_FORCING_FILE = False ! [Boolean] default = True + ! If true, use the forcing variable decomposition from + ! the old German OMIP prescription that predated CORE. If + ! false, use the variable groupings available from MOM + ! output diagnostics of forcing variables. +LONGWAVE_FILE = "forcing_daily.nc" ! + ! The file with the longwave heat flux, in the variable + ! given by LONGWAVE_FORCING_VAR. +SHORTWAVE_FILE = "forcing_daily.nc" ! + ! The file with the shortwave heat flux, in the variable + ! given by SHORTWAVE_FORCING_VAR. +EVAPORATION_FILE = "forcing_daily.nc" ! + ! The file with the evaporative moisture flux, in the + ! variable given by EVAP_FORCING_VAR. +LATENTHEAT_FILE = "forcing_daily.nc" ! + ! The file with the latent heat flux, in the variable + ! given by LATENT_FORCING_VAR. +SENSIBLEHEAT_FILE = "forcing_daily.nc" ! + ! The file with the sensible heat flux, in the variable + ! given by SENSIBLE_FORCING_VAR. +RAIN_FILE = "forcing_monthly.nc" ! + ! The file with the liquid precipitation flux, in the + ! variable given by RAIN_FORCING_VAR. +SNOW_FILE = "forcing_monthly.nc" ! + ! The file with the frozen precipitation flux, in the + ! variable given by SNOW_FORCING_VAR. +RUNOFF_FILE = "forcing_monthly.nc" ! + ! The file with the fresh and frozen runoff/calving + ! fluxes, in variables given by LIQ_RUNOFF_FORCING_VAR + ! and FROZ_RUNOFF_FORCING_VAR. +SSTRESTORE_FILE = "forcing_daily.nc" ! + ! The file with the SST toward which to restore in the + ! variable given by SST_RESTORE_VAR. +SALINITYRESTORE_FILE = "forcing_daily.nc" ! + ! The file with the surface salinity toward which to + ! restore in the variable given by SSS_RESTORE_VAR. +WIND_CONFIG = "file" ! + ! The character string that indicates how wind forcing + ! is specified. Valid options include (file), (2gyre), + ! (1gyre), (gyres), (zero), and (USER). +WIND_FILE = "forcing_daily.nc" ! + ! The file in which the wind stresses are found in + ! variables STRESS_X and STRESS_Y. +WINDSTRESS_X_VAR = "taux" ! default = "STRESS_X" + ! The name of the x-wind stress variable in WIND_FILE. +WINDSTRESS_Y_VAR = "tauy" ! default = "STRESS_Y" + ! The name of the y-wind stress variable in WIND_FILE. +WIND_STAGGER = "A" ! default = "C" + ! A character indicating how the wind stress components + ! are staggered in WIND_FILE. This may be A or C for now. +FLUXCONST = 0.5 ! [m day-1] + ! The constant that relates the restoring surface fluxes + ! to the relative surface anomalies (akin to a piston + ! velocity). Note the non-MKS units. +! === module MOM_restart === + +! === module MOM_file_parser === diff --git a/tests/rt.sh b/tests/rt.sh index 672c876e53..2b5a47483f 100755 --- a/tests/rt.sh +++ b/tests/rt.sh @@ -736,7 +736,7 @@ case ${MACHINE_ID} in PARTITION=c5 dprefix=${dprefix:-/gpfs/f5/${ACCNR}/scratch/${USER}} STMP=${STMP:-${dprefix}/RT_BASELINE} - PTMP=${PTMP:-${dprefix}/RT_RUNDIRS} + PTMP=${PTMP:-${dprefix}/RT_RUNDIRS} SCHEDULER="slurm" ;; @@ -1017,7 +1017,8 @@ if [[ "${CREATE_BASELINE}" == false ]] ; then fi fi -INPUTDATA_ROOT=${INPUTDATA_ROOT:-${DISKNM}/NEMSfv3gfs/input-data-20240501} +#INPUTDATA_ROOT=${INPUTDATA_ROOT:-${DISKNM}/NEMSfv3gfs/input-data-20240501} +INPUTDATA_ROOT=/scratch2/NCEPDEV/stmp3/Denise.Worthen/input-data-20240501 INPUTDATA_ROOT_WW3=${INPUTDATA_ROOT}/WW3_input_data_20240214 INPUTDATA_ROOT_BMIC=${INPUTDATA_ROOT_BMIC:-${DISKNM}/NEMSfv3gfs/BM_IC-20220207} INPUTDATA_LM4=${INPUTDATA_LM4:-${INPUTDATA_ROOT}/LM4_input_data} @@ -1121,7 +1122,7 @@ if [[ ${ECFLOW} == true ]]; then # Default maximum number of compile and run jobs MAX_BUILDS=10 #Max build jobs MAX_JOBS=30 #Max test/run jobs - ECF_TRIES=2 #Tries before failure + ECF_TRIES=1 #Tries before failure # Reduce maximum number of compile jobs on jet and s4 because of licensing issues if [[ ${MACHINE_ID} = jet ]]; then diff --git a/tests/rt.ultra b/tests/rt.ultra new file mode 100644 index 0000000000..cf60a0c5e8 --- /dev/null +++ b/tests/rt.ultra @@ -0,0 +1,2 @@ +COMPILE | s2s | intel | -DAPP=S2S -DCCPP_SUITES=FV3_coupled_lowres -DDEBUG=ON | | fv3 | +RUN | cpld_control_c12 | | baseline | \ No newline at end of file diff --git a/tests/tests/cpld_control_c12 b/tests/tests/cpld_control_c12 new file mode 100644 index 0000000000..a38ea90fbc --- /dev/null +++ b/tests/tests/cpld_control_c12 @@ -0,0 +1,167 @@ +# +# cpld_control_c12 test +# +export TEST_DESCR="Fully coupled FV3-CCPP-MOM6-CICE-CMEPS system - C12MX900" + +export CNTL_DIR=cpld_control_c12 + +export LIST_FILES=" " +# 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/20210323.060000.coupler.res \ +# RESTART/20210323.060000.fv_core.res.nc \ +# RESTART/20210323.060000.fv_core.res.tile1.nc \ +# RESTART/20210323.060000.fv_core.res.tile2.nc \ +# RESTART/20210323.060000.fv_core.res.tile3.nc \ +# RESTART/20210323.060000.fv_core.res.tile4.nc \ +# RESTART/20210323.060000.fv_core.res.tile5.nc \ +# RESTART/20210323.060000.fv_core.res.tile6.nc \ +# RESTART/20210323.060000.fv_srf_wnd.res.tile1.nc \ +# RESTART/20210323.060000.fv_srf_wnd.res.tile2.nc \ +# RESTART/20210323.060000.fv_srf_wnd.res.tile3.nc \ +# RESTART/20210323.060000.fv_srf_wnd.res.tile4.nc \ +# RESTART/20210323.060000.fv_srf_wnd.res.tile5.nc \ +# RESTART/20210323.060000.fv_srf_wnd.res.tile6.nc \ +# RESTART/20210323.060000.fv_tracer.res.tile1.nc \ +# RESTART/20210323.060000.fv_tracer.res.tile2.nc \ +# RESTART/20210323.060000.fv_tracer.res.tile3.nc \ +# RESTART/20210323.060000.fv_tracer.res.tile4.nc \ +# RESTART/20210323.060000.fv_tracer.res.tile5.nc \ +# RESTART/20210323.060000.fv_tracer.res.tile6.nc \ +# RESTART/20210323.060000.phy_data.tile1.nc \ +# RESTART/20210323.060000.phy_data.tile2.nc \ +# RESTART/20210323.060000.phy_data.tile3.nc \ +# RESTART/20210323.060000.phy_data.tile4.nc \ +# RESTART/20210323.060000.phy_data.tile5.nc \ +# RESTART/20210323.060000.phy_data.tile6.nc \ +# RESTART/20210323.060000.sfc_data.tile1.nc \ +# RESTART/20210323.060000.sfc_data.tile2.nc \ +# RESTART/20210323.060000.sfc_data.tile3.nc \ +# RESTART/20210323.060000.sfc_data.tile4.nc \ +# RESTART/20210323.060000.sfc_data.tile5.nc \ +# RESTART/20210323.060000.sfc_data.tile6.nc \ +# RESTART/20210323.060000.MOM.res.nc \ +# RESTART/iced.2021-03-23-21600.nc \ +# RESTART/ufs.cpld.cpl.r.2021-03-23-21600.nc" +export ATMRES=C12 + +export_fv3 +export_cpl +export CCPP_SUITE=FV3_coupled_lowres + +export RESTART_N=12 +export RESTART_INTERVAL="${RESTART_N} -1" + +export INPES=1 +export JNPES=1 +export NPZ=41 +export NPZP=42 +export TAU=10. +export N_SPONGE=5 +export D2_BG_K2=0.0 +export N_SPLIT=6 +export DNATS=1 + +export atm_omp_num_threads=1 +export WRTTASK_PER_GROUP=2 + +# export INPES=$INPES_cpl_c48 +# export JNPES=$JNPES_cpl_c48 +# export atm_omp_num_threads=$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 +OCN_tasks=2 +ICE_tasks=2 + +# atm/ocn/ice resolution +export NPX=13 +export NPY=13 +export IMO=192 +export JMO=94 + +export OCNRES=900 +export ICERES=9.00 +export NX_GLB=40 +export NY_GLB=20 +export CICE_NPROC=$ICE_tasks +export CICE_DECOMP=slenderX1 +export CICE_BLCKX=`expr $NX_GLB / $CICE_NPROC` +export CICE_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 + +# ufs.configure +export coupling_interval_slow_sec=${DT_THERM_MOM6} +export coupling_interval_fast_sec=${DT_ATMOS} + +# resolution dependent files +export MOM6_INPUT=MOM_input_${OCNRES}.IN +export MESH_ICE=mesh.mx${OCNRES}.nc +export MESH_OCN=mesh.mx${OCNRES}.nc +export CICE_GRID=grid_cice_NEMS_mx${OCNRES}.nc +export CICE_MASK=kmtu_cice_NEMS_mx${OCNRES}.nc +export MOM6_CHLCLIM='' +export MOM6_FRUNOFF='' +export MOM6_RIVER_RUNOFF=False +export MOM6_DIAG_COORD_DEF_Z_FILE=oceanda_zgrid_25L.nc + +export MOM6_INPUT=MOM_input_900.IN +export MOM6_RESTART_SETTING=n + +export CICE_ICE_IC=default +export CICE_RESTART_IOTASKS=1 +export CICE_HISTORY_IOTASKS=1 + +export FNALBC="'C12.snowfree_albedo.tileX.nc'" +export FNALBC2="'C12.facsf.tileX.nc'" +export FNTG3C="'C12.substrate_temperature.tileX.nc'" +export FNVEGC="'C12.vegetation_greenness.tileX.nc'" +export FNVETC="'C12.vegetation_type.tileX.nc'" +export FNSOTC="'C12.soil_type.tileX.nc'" +export FNSOCC="'C12.soil_color.tileX.nc'" +export FNVMNC="'C12.vegetation_greenness.tileX.nc'" +export FNVMXC="'C12.vegetation_greenness.tileX.nc'" +export FNSLPC="'C12.slope_type.tileX.nc'" +export FNABSC="'C12.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=1.0e0 + +export DIAG_TABLE=diag_table_template +export FIELD_TABLE=field_table_thompson_noaero_tke +export UFS_CONFIGURE=ufs.configure.s2s_esmf.IN + +export FV3_RUN=cpld_control_run.IN + +# HR4 GFSv17 GWD update +#export DO_GWD_OPT_PSL=.true. +#export DO_GSL_DRAG_SS=.false.