diff --git a/MOM_input b/MOM_input index d1a153d..ad5061b 100644 --- a/MOM_input +++ b/MOM_input @@ -1,81 +1,6 @@ -/* WARNING: DO NOT EDIT this file. Any changes you make will be - overriden. To make changes in MOM6 parameters within CESM - framework, use SourceMods or user_nl_mom mechanisms. - - This input file provides the adjustable run-time parameters - for version 6 of the Modular Ocean Model (MOM6). By default, - this file contains the out-of-the-box CESM configuration. A - full list of parameters for this case can be found in the - corresponding MOM_parameter_doc.all file which is generated - by the model at runtime. */ - -INPUTDIR = "./input/" - ! "The directory in which input files are found." - -TRIPOLAR_N = False - ! "[Boolean] default = False - ! Use tripolar connectivity at the northern edge of the - ! domain. With TRIPOLAR_N, NIGLOBAL must be even." - -NIHALO = 4 - ! "default = 2 - ! The number of halo points on each side in the - ! x-direction. With STATIC_MEMORY_ this is set as NIHALO_ - ! in MOM_memory.h at compile time; without STATIC_MEMORY_ - ! the default is NIHALO_ in MOM_memory.h (if defined) or 2." - -NJHALO = 4 - ! "default = 2 - ! The number of halo points on each side in the - ! y-direction. With STATIC_MEMORY_ this is set as NJHALO_ - ! in MOM_memory.h at compile time; without STATIC_MEMORY_ - ! the default is NJHALO_ in MOM_memory.h (if defined) or 2." - -NIGLOBAL = 320 - ! "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 = 384 - ! "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. - ! The number of processors in the x-direction. With - ! STATIC_MEMORY_ this is set in MOM_memory.h at compile time. - ! The number of processors in the x-direction. With - ! STATIC_MEMORY_ this is set in MOM_memory.h at compile time. - ! The processor layout that was acutally used." - -NK = 60 - ! "[nondim] - ! The number of model layers." - -USE_LEGACY_DIABATIC_DRIVER = False - ! "[Boolean] default = True - ! If true, use the a legacy version of the diabatic subroutine. - ! This is temporary and is needed avoid change in answers." - -DIABATIC_FIRST = True - ! "[Boolean] default = False - ! If true, apply diabatic and thermodynamic processes, - ! including buoyancy forcing and mass gain or loss, - ! before stepping the dynamics forward." - -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, interfaces or isopycnal surfaces are diffused, - ! depending on the value of FULL_THICKNESSDIFFUSE." - -THICKNESSDIFFUSE_FIRST = True - ! "[Boolean] default = False - ! If true, do thickness diffusion before dynamics. - ! This is only used if THICKNESSDIFFUSE is true." +! This input file provides the adjustable run-time parameters for version 6 of the Modular Ocean Model (MOM6). +! === module MOM === DT = 1800.0 ! "[s] ! The (baroclinic) dynamics time step. The time-step that @@ -101,6 +26,28 @@ HFREEZE = 10.0 ! where OBLD is the boundary layer depth. If HFREEZE <= 0 (default), ! melt potential will not be computed." +C_P = 3992.0 + ! "[J kg-1 K-1] default = 3991.86795711963 + ! The heat capacity of sea water, approximated as a + ! constant. This is only used if ENABLE_THERMODYNAMICS is + ! true. The default value is from the TEOS-10 definition + ! of conservative temperature." + +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, interfaces or isopycnal surfaces are diffused, + ! depending on the value of FULL_THICKNESSDIFFUSE." + +THICKNESSDIFFUSE_FIRST = True + ! "[Boolean] default = False + ! If true, do thickness diffusion before dynamics. + ! This is only used if THICKNESSDIFFUSE is true." + DTBT_RESET_PERIOD = 0.0 ! "[s] default = 7200.0 ! The period between recalculations of DTBT (if DTBT <= 0). @@ -128,13 +75,6 @@ BOUND_SALINITY = True ! model may ask for more salt than is available and ! drive the salinity negative otherwise.)" -C_P = 3992.0 - ! "[J kg-1 K-1] default = 3991.86795711963 - ! The heat capacity of sea water, approximated as a - ! constant. This is only used if ENABLE_THERMODYNAMICS is - ! true. The default value is from the TEOS-10 definition - ! of conservative temperature." - USE_PSURF_IN_EOS = True ! "[Boolean] default = True ! If true, always include the surface pressure contributions in equation of @@ -149,52 +89,58 @@ SAVE_INITIAL_CONDS = True ! If true, write the initial conditions to a file given ! by IC_OUTPUT_FILE." -GRID_ROTATION_ANGLE_BUGS = False +USE_CONTEMP_ABSSAL = False ! [Boolean] default = False + ! If true, the prognostics T&S are the conservative temperature and absolute + ! salinity. Care should be taken to convert them to potential temperature and + ! practical salinity before exchanging them with the coupler and/or reporting + ! T&S diagnostics. + +DEFAULT_2018_ANSWERS = 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." + ! This sets the default value for the various _2018_ANSWERS parameters." -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_domains === -USE_IDEAL_AGE_TRACER = True +TRIPOLAR_N = True ! "[Boolean] default = False - ! If true, use the ideal_age_example tracer package." + ! Use tripolar connectivity at the northern edge of the + ! domain. With TRIPOLAR_N, NIGLOBAL must be even." -USE_CFC_CAP = False - ! "[Boolean] default = False - ! If true, use the MOM_CFC_cap tracer package." +NIHALO = 4 + ! "default = 2 + ! The number of halo points on each side in the + ! x-direction. With STATIC_MEMORY_ this is set as NIHALO_ + ! in MOM_memory.h at compile time; without STATIC_MEMORY_ + ! the default is NIHALO_ in MOM_memory.h (if defined) or 2." -CFC_BC_FILE = cfc_atm_20230310.nc - ! "The file in which the CFC-11 and CFC-12 atm concentrations can be found (units - ! must be parts per trillion)." +NJHALO = 4 + ! "default = 2 + ! The number of halo points on each side in the + ! y-direction. With STATIC_MEMORY_ this is set as NJHALO_ + ! in MOM_memory.h at compile time; without STATIC_MEMORY_ + ! the default is NJHALO_ in MOM_memory.h (if defined) or 2." -COORD_CONFIG = none - ! "This specifies how layers are to be defined: - ! file - read coordinate information from the file - ! specified by (COORD_FILE). - ! linear - linear based on interfaces not layesrs. - ! 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. - ! The file from which the coordinate densities are read." +NIGLOBAL = 360 + ! "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." -REMAP_UV_USING_OLD_ALG = False - ! "[Boolean] default = True - ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If - ! false, uses the new method that remaps between grids described by an old and - ! new thickness." +NJGLOBAL = 300 + ! "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. + ! The number of processors in the x-direction. With + ! STATIC_MEMORY_ this is set in MOM_memory.h at compile time. + ! The number of processors in the x-direction. With + ! STATIC_MEMORY_ this is set in MOM_memory.h at compile time. + ! The processor layout that was acutally used." +! === module MOM_verticalGrid === +NK = 50 + ! "[nondim] + ! The number of model layers." + +! === module MOM_grid_init === GRID_CONFIG = mosaic ! "A character string that determines the method for ! defining the horizontal grid. Current options are: @@ -204,7 +150,7 @@ GRID_CONFIG = mosaic ! spherical - use a simple spherical grid. ! mercator - use a Mercator spherical grid." -GRID_FILE = ocean_hgrid_230424.nc +GRID_FILE = ocean_hgrid.nc ! "Name of the file from which to read horizontal grid data." TOPO_CONFIG = file @@ -226,7 +172,7 @@ TOPO_CONFIG = file ! seamount - Gaussian bump for spontaneous motion test case. ! USER - call a user modified routine." -TOPO_FILE = ocean_topog_230424.nc +TOPO_FILE = topog.nc ! "default = 'topog.nc' ! The file from which the bathymetry is read." @@ -242,6 +188,168 @@ MINIMUM_DEPTH = 0.5 ! MINIMUM_DEPTH but depper than MASKING_DEPTH are rounded to ! MINIMUM_DEPTH." +! === module MOM_fixed_initialization === +INPUTDIR = "./input/" + ! "The directory in which input files are found." + +CHANNEL_CONFIG = global_1deg + ! "default = 'none' + ! A parameter that determines which set of channels are + ! restricted to specific widths. Options are: + ! none - All channels have the grid width. + ! global_1deg - Sets 16 specific channels appropriate + ! for a 1-degree model, as used in CM2G. + ! list - Read the channel locations and widths from a + ! text file, like MOM_channel_list in the MOM_SIS + ! test case. + ! file - Read open face widths everywhere from a + ! NetCDF file on the model grid." + +! === module MOM_state_initialization === +INIT_LAYERS_FROM_Z_FILE = True + ! "[Boolean] default = False + ! If true, intialize the layer thicknesses, temperatures, + ! and salnities from a Z-space file on a latitude- + ! longitude grid." + +TEMP_SALT_Z_INIT_FILE = ocean_temp_salt.res.nc + ! "default = 'temp_salt_z.nc' + ! The name of the z-space input file used to initialize + ! the layer thicknesses, temperatures and salinities." + +! Currently this is actually conservative temperature +Z_INIT_FILE_PTEMP_VAR = temp + ! "default = 'ptemp' + ! The name of the potential temperature variable in + ! TEMP_SALT_Z_INIT_FILE." + +Z_INIT_FILE_SALT_VAR = salt + ! "default = 'salt' + ! The name of the salinity variable in + ! TEMP_SALT_Z_INIT_FILE." + +TEMP_SALT_INIT_VERTICAL_REMAP_ONLY = True + ! "[Boolean] default = False" + +Z_INIT_REMAP_OLD_ALG = False + ! "[Boolean] default = True + ! If false, uses the preferred remapping algorithm for initialization. If true, + ! use an older, less robust algorithm for remapping." + +Z_INIT_ALE_REMAPPING = True + ! "[Boolean] default = False + ! If True, then remap straight to model coordinate from file." + +! === module MOM_shared_initialization === +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." + +! === module MOM_coord_initialization === +COORD_CONFIG = none + ! "This specifies how layers are to be defined: + ! file - read coordinate information from the file + ! specified by (COORD_FILE). + ! linear - linear based on interfaces not layesrs. + ! 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. + ! The file from which the coordinate densities are read." + +! === module MOM_EOS === +EQN_OF_STATE = "WRIGHT" ! default = "WRIGHT" + ! EQN_OF_STATE determines which ocean equation of state should be used. + ! Currently, the valid choices are "LINEAR", "UNESCO", "WRIGHT", "NEMO" and + ! "TEOS10". This is only used if USE_EOS is true. + +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_surface_forcing === +RESTORE_SALINITY = True + ! "[Boolean] default = False + ! If true, the coupled driver will add a globally-balanced + ! fresh-water flux that drives sea-surface salinity + ! toward specified values." + +SALT_RESTORE_FILE = salt_sfc_restore.nc + ! "default = salt_restore.nc + ! A file in which to find the surface salinity to use for restoring." + +FLUXCONST = 0.11 + ! "[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." + +MAX_DELTA_SRESTORE = 0.5 + ! "[PSU or g kg-1] default = 999.0 + ! The maximum salinity difference used in restoring terms." + +SRESTORE_AS_SFLUX = True + ! "[Boolean] default = False + ! If true, the restoring of salinity is applied as a salt + ! flux instead of as a freshwater flux." + +MASK_SRESTORE_UNDER_ICE = False + ! "[Boolean] default = False + ! If true, disables SSS restoring under sea-ice based on a frazil + ! criteria (SST<=Tf). Only used when RESTORE_SALINITY is True." + +ADJUST_NET_SRESTORE_TO_ZERO = True + ! "[Boolean] default = RESTORE_SALINITY + ! If true, adjusts the salinity restoring seen to zero + ! whether restoring is via a salt flux or virtual precip." + +ADJUST_NET_FRESH_WATER_TO_ZERO = True + ! "[Boolean] default = False + ! If true, adjusts the net fresh-water forcing seen + ! by the ocean (including restoring) to zero." + +GUST_CONST = 0.02 + ! "[Pa] default = 0.02 + ! The background gustiness in the winds." + +FIX_USTAR_GUSTLESS_BUG = True + ! "[Boolean] default = False + ! If true correct a bug in the time-averaging of the gustless wind + ! friction velocity." + +! === module MOM_debugging === +DEBUG = False + ! "If true, write out verbose debugging data." + +! === module MOM_ALE === +REGRIDDING_COORDINATE_MODE = ZSTAR + ! "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" + +REMAP_UV_USING_OLD_ALG = False + ! "[Boolean] default = True + ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If + ! false, uses the new method that remaps between grids described by an old and + ! new thickness." + REMAPPING_SCHEME = PPM_H4 ! "default = 'PLM' ! This sets the reconstruction scheme used @@ -254,32 +362,66 @@ REMAPPING_SCHEME = PPM_H4 ! PQM_IH4IH3 (4th-order accurate) ! PQM_IH6IH5 (5th-order accurate)" -INIT_LAYERS_FROM_Z_FILE = True +! === module MOM_regridding === +ALE_COORDINATE_CONFIG = "FILE:ocean_vgrid.nc,interfaces=zeta" + ! "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" + +! === module MOM_diabatic_driver === +USE_LEGACY_DIABATIC_DRIVER = False + ! "[Boolean] default = True + ! If true, use the a legacy version of the diabatic subroutine. + ! This is temporary and is needed avoid change in answers." + +! === module MOM_ocean_model_nuopc === +DIABATIC_FIRST = True ! "[Boolean] default = False - ! If true, intialize the layer thicknesses, temperatures, - ! and salnities from a Z-space file on a latitude- - ! longitude grid." + ! If true, apply diabatic and thermodynamic processes, + ! including buoyancy forcing and mass gain or loss, + ! before stepping the dynamics forward." -TEMP_SALT_Z_INIT_FILE = WOA05_pottemp_salt.nc - ! "default = 'temp_salt_z.nc' - ! The name of the z-space input file used to initialize - ! the layer thicknesses, temperatures and salinities." +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'." -Z_INIT_FILE_PTEMP_VAR = PTEMP - ! "default = 'ptemp' - ! The name of the potential temperature variable in - ! TEMP_SALT_Z_INIT_FILE." +RESTART_CONTROL = 3 + ! "default = 1 + ! An integer whose bits encode which restart files are + ! written. Add 2 (bit 1) for a time-stamped file, and odd + ! (bit 0) for a non-time-stamped file. A non-time-stamped + ! restart file is saved at the end of the run segment + ! for any non-negative value." -Z_INIT_FILE_SALT_VAR = SALT - ! "default = 'salt' - ! The name of the salinity variable in - ! TEMP_SALT_Z_INIT_FILE." +! === module MOM_tracer_flow_control === +USE_IDEAL_AGE_TRACER = True + ! "[Boolean] default = False + ! If true, use the ideal_age_example tracer package." -Z_INIT_REMAP_OLD_ALG = False - ! "[Boolean] default = True - ! If false, uses the preferred remapping algorithm for initialization. If true, - ! use an older, less robust algorithm for remapping." +USE_CFC_CAP = False + ! "[Boolean] default = False + ! If true, use the MOM_CFC_cap tracer package." + +CFC_BC_FILE = cfc_atm_20230310.nc + ! "The file in which the CFC-11 and CFC-12 atm concentrations can be found (units + ! must be parts per trillion)." +! === module MOM_lateral_mixing_coeffs === USE_VARIABLE_MIXING = True ! "[Boolean] default = False ! If true, the variable mixing code will be called. This @@ -318,17 +460,67 @@ RESOLN_SCALED_KHTH = True ! when the first baroclinic deformation radius is well ! resolved." +USE_STORED_SLOPES = True + ! "[Boolean] default = False + ! If true, the isopycnal slopes are calculated once and + ! stored for re-use. This uses more memory but avoids calling + ! the equation of state more times than should be necessary." + +INTERPOLATE_RES_FN = False + ! "[Boolean] default = True + ! If true, interpolate the resolution function to the + ! velocity points from the thickness points; otherwise + ! interpolate the wave speed and calculate the resolution + ! function independently at each point." + +GILL_EQUATORIAL_LD = True + ! "[Boolean] default = False + ! If true, uses Gill's definition of the baroclinic + ! equatorial deformation radius, otherwise, if false, use + ! Pedlosky's definition. These definitions differ by a factor + ! of 2 infront of the beta term in the denominator. Gill'sis the more appropriate definition." + +KH_RES_SCALE_COEF = 0.4 + ! "[nondim] default = 1.0 + ! A coefficient that determines how KhTh is scaled away if RESOLN_SCALED_... is + ! true, as F = 1 / (1 + (KH_RES_SCALE_COEF*Rd/dx)^KH_RES_FN_POWER)." + +VISC_RES_SCALE_COEF = 0.4 + ! "[nondim] default = 1.0 + ! A coefficient that determines how Kh is scaled away if RESOLN_SCALED_... is + ! true, as F = 1 / (1 + (KH_RES_SCALE_COEF*Rd/dx)^KH_RES_FN_POWER). This + ! function affects lateral viscosity, Kh, and not KhTh." + +! === module MOM_thickness_diffuse === USE_GM_WORK_BUG = False ! "[Boolean] default = True ! If true, compute the top-layer work tendency on the u-grid with the incorrect ! sign, for legacy reproducibility." -USE_STORED_SLOPES = True +KHTH = 0.0 + ! "[m2 s-1] default = 0.0 + ! The background horizontal thickness diffusivity." + +KHTH_MAX = 0.0 + ! "[m2 s-1] default = 0.0 + ! The maximum horizontal thickness diffusivity." + +USE_KH_IN_MEKE = True ! "[Boolean] default = False - ! If true, the isopycnal slopes are calculated once and - ! stored for re-use. This uses more memory but avoids calling - ! the equation of state more times than should be necessary." + ! If true, uses the thickness diffusivity calculated here to diffuse MEKE." + +KHTH_USE_FGNV_STREAMFUNCTION = True + ! "[Boolean] default = False + ! If true, use the streamfunction formulation of + ! Ferrari et al., 2010, which effectively emphasizes + ! graver vertical modes by smoothing in the vertical." + +FGNV_C_MIN = 0.01 + ! "[m s-1] default = 0.0 + ! A minium wave speed used in the Ferrari et al., 2010, + ! streamfunction formulation." +! === module MOM_continuity_PPM === ETA_TOLERANCE = 1e-06 ! "[m] default = 3.15E-09 ! The tolerance for the differences between the @@ -338,6 +530,13 @@ ETA_TOLERANCE = 1e-06 ! is 0.5*NK*ANGSTROM, and this should not be set less x ! than about 10^-15*MAXIMUM_DEPTH." +VELOCITY_TOLERANCE = 0.0001 + ! "[m s-1] default = 3.0E+08 + ! The tolerance for barotropic velocity discrepancies + ! between the barotropic solution and the sum of the + ! layer thicknesses." + +! === module MOM_neutral_diffusion === USE_NEUTRAL_DIFFUSION = True ! "[Boolean] default = False ! If true, enables the neutral diffusion module." @@ -347,6 +546,7 @@ NDIFF_INTERIOR_ONLY = True ! If true, only applies neutral diffusion in the ocean interior. That is, the ! algorithm will exclude the surface and bottomboundary layers." +! === module MOM_hor_bnd_diffusion === USE_HORIZONTAL_BOUNDARY_DIFFUSION = True ! "[Boolean] default = False ! If true, enables the horizontal boundary tracer's diffusion module." @@ -356,6 +556,7 @@ HBD_LINEAR_TRANSITION = True ! If True, apply a linear transition at the base/top of the boundary. ! The flux will be fully applied at k=k_min and zero at k=k_max." +! === module MOM_set_diffusivity === SIMPLE_TKE_TO_KD = True ! "[Boolean] default = False ! If true, uses a simple estimate of Kd/TKE that will @@ -363,36 +564,25 @@ SIMPLE_TKE_TO_KD = True ! calculates Kd/TKE and bounds based on exact ! energetics/nfor an isopycnal layer-formulation." -REGRIDDING_COORDINATE_MODE = Z* - ! "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" +BBL_MIXING_AS_MAX = False + ! "[Boolean] default = True + ! If true, take the maximum of the diffusivity from the + ! BBL mixing and the other diffusivities. Otherwise, + ! diffusiviy from the BBL_mixing is simply added." -ALE_COORDINATE_CONFIG = "FILE:ocean_vgrid.nc,dz" - ! "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" +USE_LOTW_BBL_DIFFUSIVITY = True + ! "[Boolean] default = False + ! If true, uses a simple, imprecise but non-coordinate dependent, model + ! of BBL mixing diffusivity based on Law of the Wall. Otherwise, uses + ! the original BBL scheme." + +KD_MAX = 0.1 + ! "[m2 s-1] default = -1.0 + ! The maximum permitted increment for the diapycnal + ! diffusivity from TKE-based parameterizations, or a + ! negative value for no limit." +! === module MOM_CoriolisAdv === BOUND_CORIOLIS = True ! "[Boolean] default = False ! If true, the Coriolis terms at u-points are bounded by @@ -401,6 +591,7 @@ BOUND_CORIOLIS = True ! have no effect on the SADOURNY Coriolis scheme if it ! were possible to use centered difference thickness fluxes." +! === module MOM_tidal_forcing === TIDE_M2 = True ! "[Boolean] default = False ! If true, apply tidal momentum forcing at the M2 @@ -413,11 +604,19 @@ TIDE_SAL_SCALAR_VALUE = 0.094 ! and bottom geopotential anomalies. This is only used if ! TIDES and TIDE_USE_SAL_SCALAR are true." +! === module MOM_tidal_mixing === +INT_TIDE_DECAY_SCALE = 300.3003003003003 + ! "[m] default = 500.0 + ! The decay scale away from the bottom for tidal TKE with + ! the new coding when INT_TIDE_DISSIPATION is used." + +! === module MOM_PressureForce_FV === MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! "[Boolean] default = False ! If true, use mass weighting when interpolation T/S for ! top/bottom integrals in AFV pressure gradient calculation." +! === module MOM_hor_visc === LAPLACIAN = True ! "[Boolean] default = False ! If true, use a Laplacian horizontal viscosity." @@ -457,18 +656,12 @@ USE_LAND_MASK_FOR_HVISC = True ! maintain answers with legacy experiments but should be changed to True ! for new experiments." -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." - -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." +SMAG_BI_CONST = 0.06 + ! "[nondim] default = 0.0 + ! The nondimensional biharmonic Smagorinsky constant, + ! typically 0.015 - 0.06." +! === module MOM_set_viscosity === HBBL = 10.0 ! "[m] ! The thickness of a bottom boundary layer with a viscosity of KVBBL if @@ -481,52 +674,11 @@ PRANDTL_TURB = 1.0 ! The turbulent Prandtl number applied to shear ! instability." -U_TRUNC_FILE = U_velocity_truncations - ! "default = '' - ! The absolute path to a file into which the accelerations - ! leading to zonal velocity truncations are written. - ! Undefine this for efficiency if this diagnostic is not - ! needed." - -V_TRUNC_FILE = V_velocity_truncations - ! "default = '' - ! The absolute path to a file into which the accelerations - ! leading to meridional velocity truncations are written. - ! Undefine this for efficiency if this diagnostic is not - ! needed." - -KV = 0.0001 - ! "[m2 s-1] - ! The background kinematic viscosity in the interior. - ! The molecular value, ~1e-6 m2 s-1, may be used." - -MAXVEL = 6.0 - ! "[m s-1] default = 3.0E+08 - ! The maximum velocity allowed before the velocity - ! components are truncated." - -CFL_TRUNCATE_RAMP_TIME = 7200.0 - ! "[s] default = 0.0 - ! The time over which the CFL trunction value is ramped - ! up at the beginning of the run." - -Z_INIT_ALE_REMAPPING = True - ! "[Boolean] default = False - ! If True, then remap straight to model coordinate from file." - -INTERPOLATE_RES_FN = False - ! "[Boolean] default = True - ! If true, interpolate the resolution function to the - ! velocity points from the thickness points; otherwise - ! interpolate the wave speed and calculate the resolution - ! function independently at each point." - -GILL_EQUATORIAL_LD = True +CHANNEL_DRAG = True ! "[Boolean] default = False - ! If true, uses Gill's definition of the baroclinic - ! equatorial deformation radius, otherwise, if false, use - ! Pedlosky's definition. These definitions differ by a factor - ! of 2 infront of the beta term in the denominator. Gill'sis the more appropriate definition." + ! If true, the bottom drag is exerted directly on each + ! layer proportional to the fraction of the bottom it + ! overlies." DRAG_BG_VEL = 0.1 ! "[m s-1] default = 0.0 @@ -549,6 +701,43 @@ BBL_THICK_MIN = 0.1 ! Kv / (cdrag * drag_bg_vel) to give Kv as the minimum ! near-bottom viscosity." +! === 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." + +U_TRUNC_FILE = U_velocity_truncations + ! "default = '' + ! The absolute path to a file into which the accelerations + ! leading to zonal velocity truncations are written. + ! Undefine this for efficiency if this diagnostic is not + ! needed." + +V_TRUNC_FILE = V_velocity_truncations + ! "default = '' + ! The absolute path to a file into which the accelerations + ! leading to meridional velocity truncations are written. + ! Undefine this for efficiency if this diagnostic is not + ! needed." + +KV = 0.0001 + ! "[m2 s-1] + ! The background kinematic viscosity in the interior. + ! The molecular value, ~1e-6 m2 s-1, may be used." + +MAXVEL = 6.0 + ! "[m s-1] default = 3.0E+08 + ! The maximum velocity allowed before the velocity + ! components are truncated." + +CFL_TRUNCATE_RAMP_TIME = 7200.0 + ! "[s] default = 0.0 + ! The time over which the CFL trunction value is ramped + ! up at the beginning of the run." + +! === module MOM_barotropic === BOUND_BT_CORRECTION = True ! "[Boolean] default = False ! If true, the corrective pseudo mass-fluxes into the @@ -600,29 +789,11 @@ DTBT = -0.95 ! The value of DTBT that will actually be used is an ! integer fraction of DT, rounding down." -KHTH = 0.0 - ! "[m2 s-1] default = 0.0 - ! The background horizontal thickness diffusivity." - -KHTH_MAX = 0.0 - ! "[m2 s-1] default = 0.0 - ! The maximum horizontal thickness diffusivity." - -USE_KH_IN_MEKE = True - ! "[Boolean] default = False - ! If true, uses the thickness diffusivity calculated here to diffuse MEKE." - -KHTH_USE_FGNV_STREAMFUNCTION = True +TIDES = True ! "[Boolean] default = False - ! If true, use the streamfunction formulation of - ! Ferrari et al., 2010, which effectively emphasizes - ! graver vertical modes by smoothing in the vertical." - -FGNV_C_MIN = 0.01 - ! "[m s-1] default = 0.0 - ! A minium wave speed used in the Ferrari et al., 2010, - ! streamfunction formulation." + ! If true, apply tidal momentum forcing." +! === module MOM_mixed_layer_restrat === MIXEDLAYER_RESTRAT = True ! "[Boolean] default = False ! If true, a density-gradient dependent re-stratifying @@ -659,6 +830,7 @@ MLE_MLD_DECAY_TIME = 345600.0 ! the MLD deepens below the current running-mean the running-mean ! is instantaneously set to the current MLD." +! === module MOM_CVMix_conv === USE_CVMix_CONVECTION = True ! "[Boolean] default = False ! If true, turns on the enhanced mixing due to convection @@ -666,24 +838,58 @@ USE_CVMix_CONVECTION = True ! at statically unstable interfaces. Relevant parameters are ! contained in the CVMix_CONVECTION% parameter block." -BBL_MIXING_AS_MAX = False - ! "[Boolean] default = True - ! If true, take the maximum of the diffusivity from the - ! BBL mixing and the other diffusivities. Otherwise, - ! diffusiviy from the BBL_mixing is simply added." +! === module MOM_CVMix_shear === +USE_LMD94 = True + ! "[Boolean] default = False + ! If true, use the Large-McWilliams-Doney (JGR 1994) + ! shear mixing parameterization." -USE_LOTW_BBL_DIFFUSIVITY = True +N_SMOOTH_RI = 1 + ! "default = 0 + ! If > 0, vertically smooth the Richardson number by applying a 1-2-1 filter + ! N_SMOOTH_RI times." + +! === module MOM_CVMix_KPP === +USE_KPP = True ! "[Boolean] default = False - ! If true, uses a simple, imprecise but non-coordinate dependent, model - ! of BBL mixing diffusivity based on Law of the Wall. Otherwise, uses - ! the original BBL scheme." + ! If true, turns on the [CVMix] KPP scheme of Large et al., 1994, + ! to calculate diffusivities and non-local transport in the OBL." -KD_MAX = 0.1 - ! "[m2 s-1] default = -1.0 - ! The maximum permitted increment for the diapycnal - ! diffusivity from TKE-based parameterizations, or a - ! negative value for no limit." +KPP% +N_SMOOTH = 3 + ! "default = 0 + ! The number of times the 1-1-4-1-1 Laplacian filter is applied on + ! OBL depth. + ! purely for diagnostic purposes." + +MATCH_TECHNIQUE = MatchGradient + ! "default = 'SimpleShapes' + ! CVMix method to set profile function for diffusivity and NLT, + ! as well as matching across OBL base. Allowed values are: + ! SimpleShapes = sigma*(1-sigma)^2 for both diffusivity and NLT + ! MatchGradient = sigma*(1-sigma)^2 for NLT; diffusivity profile from matching + ! MatchBoth = match gradient for both diffusivity and NLT + ! ParabolicNonLocal = sigma*(1-sigma)^2 for diffusivity; (1-sigma)^2 for NLT" + +INTERP_TYPE2 = LMD94 + ! "Type of interpolation to compute diff and visc at OBL_depth + ! Allowed types are: linear, quadratic, cubic or LMD94." + +KPP_IS_ADDITIVE = False + ! "[Boolean] default = True + ! If true, adds KPP diffusivity to diffusivity from other schemes.If false, KPP is + ! the only diffusivity wherever KPP is non-zero." + +%KPP + +! === module MOM_CVMix_ddiff === +USE_CVMIX_DDIFF = True + ! "[Boolean] default = False + ! If true, turns on double diffusive processes via CVMix. + ! Note that double diffusive processes on viscosity are ignored + ! in CVMix, see http://cvmix.github.io/ for justification." +! === module MOM_bkgnd_mixing === HORIZ_VARYING_BACKGROUND = True ! "[Boolean] default = False ! If true, apply vertically uniform, latitude-dependent background diffusivity, @@ -712,32 +918,7 @@ KD_MIN = 2e-06 ! drive diapycnal mixing, along the lines of St. Laurent ! et al. (2002) and Simmons et al. (2004)." -INT_TIDE_DECAY_SCALE = 300.3003003003003 - ! "[m] default = 500.0 - ! The decay scale away from the bottom for tidal TKE with - ! the new coding when INT_TIDE_DISSIPATION is used." - -USE_KPP = True - ! "[Boolean] default = False - ! If true, turns on the [CVMix] KPP scheme of Large et al., 1994, - ! to calculate diffusivities and non-local transport in the OBL." - -USE_LMD94 = True - ! "[Boolean] default = False - ! If true, use the Large-McWilliams-Doney (JGR 1994) - ! shear mixing parameterization." - -N_SMOOTH_RI = 1 - ! "default = 0 - ! If > 0, vertically smooth the Richardson number by applying a 1-2-1 filter - ! N_SMOOTH_RI times." - -USE_CVMIX_DDIFF = True - ! "[Boolean] default = False - ! If true, turns on double diffusive processes via CVMix. - ! Note that double diffusive processes on viscosity are ignored - ! in CVMix, see http://cvmix.github.io/ for justification." - +! === module MOM_entrain_diffusive === MAX_ENT_IT = 20 ! "default = 5 ! The maximum number of iterations that may be used to @@ -747,11 +928,13 @@ TOLERANCE_ENT = 1e-05 ! "[m] default = 2.683281572999748E-05 ! The tolerance with which to solve for entrainment values." +! === module MOM_mixed_layer === HMIX_MIN = 2.0 ! "[m] default = 0.0 ! The minimum mixed layer depth if the mixed layer depth ! is determined dynamically." +! === module MOM_opacity === PEN_SW_SCALE = 15.0 ! "[m] default = 0.0 ! The vertical absorption e-folding depth of the @@ -762,18 +945,21 @@ PEN_SW_FRAC = 0.42 ! The fraction of the shortwave radiation that penetrates ! below the surface." +! === module MOM_diabatic_aux === PRESSURE_DEPENDENT_FRAZIL = True ! "[Boolean] default = False ! If true, use a pressure dependent freezing temperature ! when making frazil. The default is false, which will be ! faster but is inappropriate with ice-shelf cavities." +! === 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)" +! === module MOM_tracer_hor_diff === KHTR_MIN = 50.0 ! "[m2 s-1] default = 0.0 ! The minimum along-isopycnal tracer diffusivity." @@ -782,9 +968,6 @@ KHTR_MAX = 0.0 ! "[m2 s-1] default = 0.0 ! The maximum along-isopycnal tracer diffusivity." -DEBUG = False - ! "If true, write out verbose debugging data." - CHECK_DIFFUSIVE_CFL = True ! "[Boolean] default = False ! If true, use enough iterations the diffusion to ensure @@ -799,6 +982,7 @@ MAX_TR_DIFFUSION_CFL = 2.0 ! below this value. The number of diffusive iterations ! is often this value or the next greater integer." +! === module MOM_sum_output === MAXTRUNC = 0 ! "[truncations save_interval-1] default = 0 ! The run will be stopped, and the day set to a very @@ -806,61 +990,12 @@ MAXTRUNC = 0 ! MAXTRUNC times between energy saves. Set MAXTRUNC to 0 ! to stop if there is any truncation of velocities." -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'." - -RESTORE_SALINITY = False - ! "[Boolean] default = False - ! If true, the coupled driver will add a globally-balanced - ! fresh-water flux that drives sea-surface salinity - ! toward specified values." - -ENTHALPY_FROM_COUPLER = True - ! "[Boolean] default = False - ! If True, the heat (enthalpy) associated with mass entering/leaving - ! the ocean is provided via coupler." - -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." - -ADJUST_NET_FRESH_WATER_TO_ZERO = True - ! "[Boolean] default = False - ! If true, adjusts the net fresh-water forcing seen - ! by the ocean (including restoring) to zero." - -GUST_CONST = 0.02 - ! "[Pa] default = 0.02 - ! The background gustiness in the winds." - -FIX_USTAR_GUSTLESS_BUG = True - ! "[Boolean] default = False - ! If true correct a bug in the time-averaging of the gustless wind - ! friction velocity." - -RESTART_CONTROL = 3 - ! "default = 1 - ! An integer whose bits encode which restart files are - ! written. Add 2 (bit 1) for a time-stamped file, and odd - ! (bit 0) for a non-time-stamped file. A non-time-stamped - ! restart file is saved at the end of the run segment - ! for any non-negative value." - ENERGYSAVEDAYS = 1.0 ! "[days] default = 1.0 ! The interval in units of TIMEUNIT between saves of the ! energies of the run and other globally summed diagnostics." -TIDES = True - ! "[Boolean] default = False - ! If true, apply tidal momentum forcing." - +! === module MOM_MEKE === USE_MEKE = True ! "[Boolean] default = False ! If true, turns on the MEKE scheme which calculates @@ -913,17 +1048,6 @@ MEKE_ALPHA_GRID = 1.0 ! If positive, is a coefficient weighting the grid-spacing as a scale in the ! expression for mixing length used in MEKE-derived diffusivity." -KH_RES_SCALE_COEF = 0.4 - ! "[nondim] default = 1.0 - ! A coefficient that determines how KhTh is scaled away if RESOLN_SCALED_... is - ! true, as F = 1 / (1 + (KH_RES_SCALE_COEF*Rd/dx)^KH_RES_FN_POWER)." - -VISC_RES_SCALE_COEF = 0.4 - ! "[nondim] default = 1.0 - ! A coefficient that determines how Kh is scaled away if RESOLN_SCALED_... is - ! true, as F = 1 / (1 + (KH_RES_SCALE_COEF*Rd/dx)^KH_RES_FN_POWER). This - ! function affects lateral viscosity, Kh, and not KhTh." - MEKE_GEOMETRIC = True ! "[Boolean] default = False ! If MEKE_GEOMETRIC is true, uses the GM coefficient formulation from the @@ -961,7 +1085,26 @@ MEKE_ADVECTION_FACTOR = 1.0 ! Using unity would be normal but other values could accommodate a mismatch ! between the advecting barotropic flow and the vertical structure of MEKE." -DIAG_COORD_DEF_Z = WOA09 +! === module MOM_kappa_shear === +MAX_RINO_IT = 25 + ! "[nondim] default = 50 + ! The maximum number of iterations that may be used to + ! estimate the Richardson number driven mixing." + +KAPPA_SHEAR_ITER_BUG = False + ! "[Boolean] default = True + ! If true, use an older, dimensionally inconsistent estimate of the derivative + ! of diffusivity with energy in the Newton's method iteration. The bug causes + ! undercorrections when dz > 1 m." + +KAPPA_SHEAR_ALL_LAYER_TKE_BUG = False + ! "[Boolean] default = True + ! If true, report back the latest estimate of TKE instead of the time average + ! TKE when there is mass in all layers. Otherwise always report the time averaged + ! TKE, as is currently done when there are some massless layers." + +! === module MOM_diag_mediator === +DIAG_COORD_DEF_Z = "FILE:ocean_vgrid.nc,interfaces=zeta" ! "default = WOA09 ! Determines how to specify the coordinate ! resolution. Valid options are: @@ -978,71 +1121,12 @@ DIAG_COORD_DEF_Z = WOA09 ! by a comma or space, for sigma-2 and dz. e.g. ! HYBRID:vgrid.nc,sigma2,dz" -MAX_RINO_IT = 25 - ! "[nondim] default = 50 - ! The maximum number of iterations that may be used to - ! estimate the Richardson number driven mixing." - -CHANNEL_CONFIG = global_1deg - ! "default = 'none' - ! A parameter that determines which set of channels are - ! restricted to specific widths. Options are: - ! none - All channels have the grid width. - ! global_1deg - Sets 16 specific channels appropriate - ! for a 1-degree model, as used in CM2G. - ! list - Read the channel locations and widths from a - ! text file, like MOM_channel_list in the MOM_SIS - ! test case. - ! file - Read open face widths everywhere from a - ! NetCDF file on the model grid." - -SMAG_BI_CONST = 0.06 - ! "[nondim] default = 0.0 - ! The nondimensional biharmonic Smagorinsky constant, - ! typically 0.015 - 0.06." - -KAPPA_SHEAR_ITER_BUG = False - ! [Boolean] default = True If true, use an older, dimensionally inconsistent estimate of the derivative of diffusivity with energy in the Newton's method iteration. The bug causes undercorrections when dz > 1 m. - -KAPPA_SHEAR_ALL_LAYER_TKE_BUG = False - ! [Boolean] default = True If true, report back the latest estimate of TKE instead of the time average TKE when there is mass in all layers. Otherwise always report the time averaged TKE, as is currently done when there are some massless layers. - -VELOCITY_TOLERANCE = 0.0001 - ! "[m s-1] default = 3.0E+08 - ! The tolerance for barotropic velocity discrepancies - ! between the barotropic solution and the sum of the - ! layer thicknesses." - -DEFAULT_2018_ANSWERS = False - ! "[Boolean] default = True - ! This sets the default value for the various _2018_ANSWERS parameters." - -KPP% -N_SMOOTH = 3 - ! "default = 0 - ! The number of times the 1-1-4-1-1 Laplacian filter is applied on - ! OBL depth. - ! purely for diagnostic purposes." - -MATCH_TECHNIQUE = MatchGradient - ! "default = 'SimpleShapes' - ! CVMix method to set profile function for diffusivity and NLT, - ! as well as matching across OBL base. Allowed values are: - ! SimpleShapes = sigma*(1-sigma)^2 for both diffusivity and NLT - ! MatchGradient = sigma*(1-sigma)^2 for NLT; diffusivity profile from matching - ! MatchBoth = match gradient for both diffusivity and NLT - ! ParabolicNonLocal = sigma*(1-sigma)^2 for diffusivity; (1-sigma)^2 for NLT" - -INTERP_TYPE2 = LMD94 - ! "Type of interpolation to compute diff and visc at OBL_depth - ! Allowed types are: linear, quadratic, cubic or LMD94." - -KPP_IS_ADDITIVE = False - ! "[Boolean] default = True - ! If true, adds KPP diffusivity to diffusivity from other schemes.If false, KPP is - ! the only diffusivity wherever KPP is non-zero." - -%KPP +! === module MOM_surface_forcing_nuopc === +ENTHALPY_FROM_COUPLER = True + ! "[Boolean] default = False + ! If True, the heat (enthalpy) associated with mass entering/leaving + ! the ocean is provided via coupler." LATENT_HEAT_FUSION = 3.337E+05 ! [J/kg] default = 3.337E+05 + LATENT_HEAT_VAPORIZATION = 2.501E+06 ! [J/kg] default = 2.501E+06 diff --git a/config.yaml b/config.yaml index 68681e5..2e6dbfd 100644 --- a/config.yaml +++ b/config.yaml @@ -18,21 +18,11 @@ jobname: 1deg_jra55do_ryf model: access-om3 -exe: /g/data/ik11/inputs/access-om3/bin/access-om3-MOM6-CICE6-059b7b2 +exe: /g/data/ik11/inputs/access-om3/bin/access-om3-MOM6-CICE6-fdaa3a6 input: - - /g/data/ik11/inputs/access-om3/0.x.0/cime/share/meshes/T62_040121_ESMFmesh.nc # datm meshfile - - /g/data/ik11/inputs/access-om3/0.x.0/share/meshes/JRA55do-ESMFmesh.nc # datm JRA stream meshfile - - /g/data/ik11/inputs/access-om3/0.x.0/cime/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc # datm aerosol/lnd stream meshfile - - /g/data/ik11/inputs/access-om3/0.x.0/cime/share/meshes/gx1v6_090205_ESMFmesh.nc # ice, ocn meshfile - - /g/data/ik11/inputs/access-om3/0.x.0/cime/share/meshes/rx1_nomask_181022_ESMFmesh.nc # drof meshfile - - /g/data/ik11/inputs/access-om3/0.x.0/cime/cpl/gridmaps/rx1/map_rx1_to_gx1v6_nnsm_e1000r300_170503.nc - - /g/data/ik11/inputs/access-om3/0.x.0/cime/cpl/gridmaps/rx1/map_rx1_to_gx1v6_nn_open_ocean_nnsm_e1000r300_marginal_sea_170503.nc - - /g/data/ik11/inputs/JRA-55/RYF/v1-4 # datm and drof JRA55-do streams - - /g/data/ik11/inputs/access-om3/0.x.0/cime/ice/cice/b.e15.B1850G.f09_g16.pi_control.25.cice.r.0041-01-01-00000.nc # ice initial conditions - - /g/data/ik11/inputs/access-om3/0.x.0/cime/ice/cice/global_gx1.bathy.nc # ice bathymetry file - - /g/data/ik11/inputs/access-om3/0.x.0/cime/ocn/pop/gx1v6/grid/horiz_grid_20010402.ieeer8 # ice grid file - - /g/data/ik11/inputs/access-om3/0.x.0/cime/ocn/pop/gx1v6/grid/topography_20090204.ieeei4 # ice kmt file - - /g/data/ik11/inputs/access-om3/0.x.0/cime/ocn/mom/gx1v6 # ocn input data + - /g/data/ik11/inputs/access-om3/0.x.0/1deg # grids, ICs etc + - /g/data/ik11/inputs/access-om3/0.x.0/share/meshes/JRA55do-ESMFmesh.nc # mesh for JRA55-do stream + - /g/data/ik11/inputs/JRA-55/RYF/v1-4 # datm and drof JRA55-do streams data collate: false runlog: false diff --git a/datm_in b/datm_in index c1289df..4507f3e 100644 --- a/datm_in +++ b/datm_in @@ -8,10 +8,10 @@ flds_preso3 = .false. flds_wiso = .false. iradsw = 1 - model_maskfile = "./input/T62_040121_ESMFmesh.nc" - model_meshfile = "./input/T62_040121_ESMFmesh.nc" - nx_global = 192 - ny_global = 94 + model_maskfile = "./input/access-om2-1deg-nomask-ESMFmesh.nc" + model_meshfile = "./input/access-om2-1deg-nomask-ESMFmesh.nc" + nx_global = 360 + ny_global = 300 restfilm = "null" skip_restart_read = .false. / diff --git a/drof_in b/drof_in index 09f78ca..028d030 100644 --- a/drof_in +++ b/drof_in @@ -1,9 +1,9 @@ &drof_nml datamode = "copyall" - model_maskfile = "./input/rx1_nomask_181022_ESMFmesh.nc" - model_meshfile = "./input/rx1_nomask_181022_ESMFmesh.nc" + model_maskfile = "./input/access-om2-1deg-nomask-ESMFmesh.nc" + model_meshfile = "./input/access-om2-1deg-nomask-ESMFmesh.nc" nx_global = 360 - ny_global = 180 + ny_global = 300 restfilm = "null" skip_restart_read = .false. / diff --git a/generate_mesh.py b/generate_mesh.py new file mode 100755 index 0000000..7a41683 --- /dev/null +++ b/generate_mesh.py @@ -0,0 +1,409 @@ +# Copyright 2023 ACCESS-NRI and contributors. See the top-level COPYRIGHT file for details. +# SPDX-License-Identifier: Apache-2.0 + +# Contact: Dougie Squire +# To run: +# python generate_mesh.py --grid_type= --grid_filename= \ +# --mask_filename= --mesh_filename= +# in an environment with argparse, xarray, numpy and pandas + +import os +import subprocess +from datetime import datetime + +import numpy as np +import xarray as xr +import pandas as pd + + +def is_git_repo(): + """ + Return True/False depending on whether or not the current directory is a git repo. + """ + + return subprocess.call( + ['git', '-C', '.', 'status'], + stderr=subprocess.STDOUT, + stdout = open(os.devnull, 'w') + ) == 0 + +def git_info(): + """ + Return the git repo origin url, relative path to this file, and latest commit hash. + """ + + url = subprocess.check_output( + ["git", "remote", "get-url", "origin"] + ).decode('ascii').strip() + top_level_dir = subprocess.check_output( + ['git', 'rev-parse', '--show-toplevel'] + ).decode('ascii').strip() + rel_path = os.path.relpath(__file__, top_level_dir) + hash = subprocess.check_output( + ['git', 'rev-parse', 'HEAD'] + ).decode('ascii').strip() + + return url, rel_path, hash + + +class BaseGrid: + + def __init__(self, x_centres, y_centres, x_corners, y_corners, area=None, mask=None, inputs=None): + """ + Initialise a mesh object + + Parameters + ---------- + x_centres: len(elementCount) array-like + Longitudinal positions of the element centre coords + y_centres: len(elementCount) array-like + Latitudinal positions of the element centre coords + x_corners: (elementCount x 4) array-like + Longitudinal positions of the corner nodes of each element, ordered ll, lr, ur, ul + y_corners: (elementCount x 4) array-like + LongitLatitudinaludinal positions of the corner nodes of each element, ordered ll, lr, ur, ul + area: len(elementCount) array-like, optional + Areas of each element + mask: len(elementCount) array-like + Mask values for each element, optional + inputs: str or list of str, optional + Paths to the files used to create the grid + """ + + self.x_centres = x_centres + self.y_centres = y_centres + + self.x_corners = x_corners.flatten() + self.y_corners = y_corners.flatten() + + self.area = area + self.mask = mask + + if isinstance(inputs, str): + inputs = [inputs] + self.inputs = inputs + + self.mesh = None + + def create_mesh(self, wrap_lons=False, global_attrs=None): + """ + Create the mesh as an xarray Dataset + + Parameters + ---------- + wrap_lons: boolean, optional + If True, wrap longitude values into the range between 0 and 360 + global_attrs: dict + Global attributes to the mesh object + """ + + if wrap_lons: + self.x_centres = (self.x_centres + 360) % 360 + self.x_corners = (self.x_corners + 360) % 360 + + centres = np.stack((self.x_centres, self.y_centres), axis=1) + corners_df = pd.DataFrame({"x": self.x_corners, "y": self.y_corners}) + + # calculate indexes of corner nodes per element + elem_conn = ( + corners_df.groupby(['x','y'], sort=False).ngroup()+1 + ).to_numpy().reshape((-1,4)) + + # calculate corner nodes + nodes = corners_df.drop_duplicates().to_numpy() + + # create mask if we don't have one + if self.mask is None: + self.mask = np.ones_like(self.x_centres, dtype=np.int8) + + # create a new dataset for the mesh + ds = xr.Dataset() + ds['nodeCoords'] = xr.DataArray( + nodes.astype(np.float64), + dims=('nodeCount', 'coordDim'), + attrs={'units': 'degrees'} + ) + ds['elementConn'] = xr.DataArray( + elem_conn.astype(np.int32), + dims=('elementCount', 'maxNodePElement'), + attrs={'long_name': 'Node indices that define the element connectivity'} + ) + ds['numElementConn'] = xr.DataArray( + 4 * np.ones_like(self.x_centres, dtype=np.int32), + dims=('elementCount'), + attrs={'long_name': 'Number of nodes per element'} + ) + ds['centerCoords'] = xr.DataArray( + centres.astype(np.float64), + dims=('elementCount', 'coordDim'), + attrs={'units': 'degrees'} + ) + + ds["elementMask"] = xr.DataArray( + self.mask.astype(np.int8), + dims=('elementCount'), + ) + + if self.area is not None: + ds["elementArea"] = xr.DataArray( + self.area.astype(np.float64), + dims=('elementCount'), + ) + + # force no _FillValue (for now) + for v in ds.variables: + if '_FillValue' not in ds[v].encoding: + ds[v].encoding['_FillValue'] = None + + # add global attributes + ds.attrs = { + "gridType" : "unstructured mesh", + "timeGenerated": f"{datetime.now()}", + "created_by": f"{os.environ.get('USER')}" + } + if self.inputs: + ds.attrs["inputFile"] = ", ".join(self.inputs) + + # add git info to history + if global_attrs: + ds.attrs |= global_attrs + + self.mesh = ds + + return self + + def write(self, filename): + """ + Save the mesh to a file + """ + + if self.mesh is None: + raise ValueError("Before writing, you must first create the mesh object using self.create_mesh()") + + self.mesh.to_netcdf(filename) + + +class MomSuperGrid(BaseGrid): + + def __init__(self, hgrid_filename, mask_filename=None): + """ + Initialise a mesh representation of h-cells from a MOM supergrid + + Parameters + ---------- + hgrid_filename: str + Path to the MOM hgrid netcdf file + mask_filename: str, optional + Path to a netcdf file containing a mask corresponding to the MOM hgrid + """ + + grid = xr.open_dataset(hgrid_filename) + inputs = [hgrid_filename] + + if mask_filename: + mask = xr.open_dataset(mask_filename).mask.values.flatten() + inputs += [mask_filename] + else: + mask = None + + # sum areas in elements + area = grid.area.values + area = ( + area[::2, ::2] + area[1::2, ::2] + area[1::2, 1::2] + area[::2, 1::2] + ).flatten() + + x = grid.x.values + y = grid.y.values + + # prep x corners + ll = x[:-2:2, :-2:2] + lr = x[:-2:2, 2::2] + ul = x[2::2, :-2:2] + ur = x[2::2, 2::2] + x_corners = np.stack((ll.flatten(), lr.flatten(), ur.flatten(), ul.flatten()), axis=1) + x_centres = x[1:-1:2, 1:-1:2].flatten() + + # prep y corners + ll = y[:-2:2, :-2:2] + lr = y[:-2:2, 2::2] + ul = y[2::2, :-2:2] + ur = y[2::2, 2::2] + y_corners = np.stack((ll.flatten(), lr.flatten(), ur.flatten(), ul.flatten()), axis=1) + y_centres = y[1:-1:2, 1:-1:2].flatten() + + super().__init__( + x_centres=x_centres, + y_centres=y_centres, + x_corners=x_corners, + y_corners=y_corners, + area=area, + mask=mask, + inputs=inputs, + ) + + +class LatLonGrid(BaseGrid): + + def __init__(self, grid_filename, mask_filename=None, lon_dim="lon", lat_dim="lat", area_var="area"): + """ + Initialise a mesh representation from lat/lon locations + + Parameters + ---------- + grid_filename: str + Path to a netcdf file containing a lat/lon grid + mask_filename: str, optional + Path to a netcdf file containing a mask corresponding to the lat/lon grid + lon_dim: str, optional + The name of the longitude dimension + lat_dim: str, optional + The name of the latitude dimension + area_var: str, optional + The name of the area variable if one exists + """ + + grid = xr.open_dataset(grid_filename, chunks={}) + inputs = [grid_filename] + + if mask_filename: + mask = xr.open_dataset(mask_filename).values.flatten() + inputs += [mask_filename] + else: + mask = None + + if area_var in grid: + area = grid[area_var].values.flatten() + else: + area = None + + x_centres = grid[lon_dim].values + y_centres = grid[lat_dim].values + + has_lon_bounds = hasattr(grid[lon_dim], "bounds") and grid[lon_dim].bounds in grid + has_lat_bounds = hasattr(grid[lat_dim], "bounds") and grid[lat_dim].bounds in grid + + if has_lon_bounds: + lon_bnds = grid[getattr(grid[lon_dim], "bounds")] + + # flip and concat for ll, lr, ur, ul + x_corners = np.concatenate([lon_bnds.values, lon_bnds[...,::-1].values], axis=-1) + else: + # Average neighbouring cells to get bounds + ext = np.pad(x_centres, (1,), mode='reflect', reflect_type='odd') + bnds = (ext[:-1] + ext[1:]) / 2 + + # stack as ll, lr, ur, ul + x_corners = np.stack([bnds[:-1], bnds[1:], bnds[1:], bnds[:-1]], axis=1) + + if has_lat_bounds: + lat_bnds = grid[getattr(grid[lat_dim], "bounds")] + # repeat for ll, lr, ur, ul + y_corners = np.repeat(lat_bnds.values, 2, axis=1) + else: + # Average neighbouring cells to get bounds + ext = np.pad(y_centres, (1,), mode='reflect', reflect_type='odd') + bnds = (ext[:-1] + ext[1:]) / 2 + + # stack as ll, lr, ur, ul + y_corners = np.stack([bnds[:-1], bnds[:-1], bnds[1:], bnds[1:]], axis=1) + + # broadcast corners + x_corners, y_corners = np.broadcast_arrays( + np.expand_dims(x_corners, axis=0), + np.expand_dims(y_corners, axis=1) + ) + x_corners = x_corners.reshape(-1, 4) + y_corners = y_corners.reshape(-1, 4) + + # broadcast centres + x_centres, y_centres = np.broadcast_arrays( + np.expand_dims(x_centres, axis=0), + np.expand_dims(y_centres, axis=1) + ) + x_centres = x_centres.flatten() + y_centres = y_centres.flatten() + + super().__init__( + x_centres=x_centres, + y_centres=y_centres, + x_corners=x_corners, + y_corners=y_corners, + area=area, + mask=mask, + inputs=inputs, + ) + +gridtype_dispatch = { + "latlon": LatLonGrid, + "mom": MomSuperGrid, +} + +def main(): + parser = argparse.ArgumentParser( + description="Create an ESMF mesh file from a grid in a netcdf file." + ) + + parser.add_argument( + "--grid-type", + choices=gridtype_dispatch.keys(), + required=True, + help='The type of grid in the netcdf file.', + ) + parser.add_argument( + "--wrap-lons", + default=False, + action="store_true", + help="Wrap longitude values into the range between 0 and 360." + ) + parser.add_argument( + "--grid-filename", + type=str, + required=True, + help="The path to the netcdf file specifying the grid.", + ) + parser.add_argument( + "--mask-filename", + type=str, + default=None, + help="The path to a netcdf file specifying the mask.", + ) + parser.add_argument( + "--mesh-filename", + type=str, + required=True, + help="The path to the mesh file to create.", + ) + + args = parser.parse_args() + grid_type = args.grid_type + wrap_lons = args.wrap_lons + grid_filename = args.grid_filename + mask_filename = args.mask_filename + mesh_filename = args.mesh_filename + + # Add some info about how the file was generated + runcmd = ( + f"python3 {__file__} --grid-type={grid_type} --grid-filename={grid_filename} " + f"--mesh-filename={mesh_filename}" + ) + if mask_filename: + runcmd += f" --mask-filename={mask_filename}" + if wrap_lons: + runcmd += f" --wrap-lons" + + if is_git_repo(): + url, rel_path, hash = git_info() + prepend = f"Created using commit {hash} of {rel_path} in {url}: " + else: + prepend = "Created using: " + + global_attrs = {"history": prepend + runcmd} + + mesh = gridtype_dispatch[grid_type](grid_filename, mask_filename) + + mesh.create_mesh(wrap_lons=wrap_lons, global_attrs=global_attrs).write(mesh_filename) + +if __name__ == "__main__": + import argparse + + main() diff --git a/ice_in b/ice_in index 122693a..c3b3c20 100644 --- a/ice_in +++ b/ice_in @@ -11,7 +11,7 @@ history_file = "unknown" history_format = "default" history_precision = 4 - ice_ic = "./input/b.e15.B1850G.f09_g16.pi_control.25.cice.r.0041-01-01-00000.nc" + ice_ic = "./input/iced.1900-01-01-10800.nc" latpnt = 90.0, -65.0 lcdf64 = .true. lonpnt = 0.0, -45.0 @@ -30,25 +30,25 @@ year_init = 1 / &grid_nml - bathymetry_file = "./input/global_gx1.bathy.nc" - bathymetry_format = "pop" + bathymetry_file = "./input/topog.nc" + bathymetry_format = "default" close_boundaries = .false. dxrect = 30.0e5 dyrect = 30.0e5 grid_atm = "A" - grid_file = "./input/horiz_grid_20010402.ieeer8" - grid_format = "bin" + grid_file = "./input/grid.nc" + grid_format = "nc" grid_ice = "B" grid_ocn = "A" - grid_type = "displaced_pole" + grid_type = "tripole" gridcpl_file = "unknown_gridcpl_file" kcatbound = 0 - kmt_file = "./input/topography_20090204.ieeei4" + kmt_file = "./input/kmt.nc" nblyr = 3 ncat = 5 nfsd = 1 - nilyr = 8 - nslyr = 3 + nilyr = 4 + nslyr = 1 orca_halogrid = .false. use_bathymetry = .false. / @@ -181,7 +181,7 @@ l_mpond_fresh = .false. natmiter = 5 nfreq = 25 - restart_coszen = .true. + restart_coszen = .false. rotate_wind = .true. saltflux_option = "prognostic" tfrz_option = "mushy" @@ -201,9 +201,9 @@ maskhalo_dyn = .true. maskhalo_remap = .true. max_blocks = 8 - ns_boundary_type = "open" - nx_global = 320 - ny_global = 384 + ns_boundary_type = "tripole" + nx_global = 360 + ny_global = 300 processor_shape = "square-ice" / &ice_prescribed_nml diff --git a/manifests/exe.yaml b/manifests/exe.yaml index d9a1a85..e6341c6 100644 --- a/manifests/exe.yaml +++ b/manifests/exe.yaml @@ -1,8 +1,8 @@ format: yamanifest version: 1.0 --- -work/access-om3-MOM6-CICE6-059b7b2: - fullpath: /g/data/ik11/inputs/access-om3/bin/access-om3-MOM6-CICE6-059b7b2 +work/access-om3-MOM6-CICE6-fdaa3a6: + fullpath: /g/data/ik11/inputs/access-om3/bin/access-om3-MOM6-CICE6-fdaa3a6 hashes: - binhash: 439eea4bbb38e3ccba5b13ece7466437 - md5: 0f0e44fd3c80a77d8abb2261bf4601dd + binhash: 2da776bd1575afca5d258430a963af08 + md5: 09db6001a381ca73775cc380c4cf20fc diff --git a/manifests/input.yaml b/manifests/input.yaml index dd8cfb1..d388af1 100644 --- a/manifests/input.yaml +++ b/manifests/input.yaml @@ -66,41 +66,31 @@ work/input/RYF.vas.1990_1991.nc: hashes: binhash: 17224eecb745b6ce72604b41201c1fe7 md5: 88dc8c70338bbc8f5efc48ed0009a99f -work/input/T62_040121_ESMFmesh.nc: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/share/meshes/T62_040121_ESMFmesh.nc - hashes: - binhash: 7139bf220d302d5ab110ad45ea5ab05b - md5: 0623c04264b7a129b4c5b302bd292262 -work/input/WOA05_pottemp_salt.nc: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/ocn/mom/gx1v6/WOA05_pottemp_salt.nc - hashes: - binhash: 871e36b62c8f83b55b116cf1e9ec04d3 - md5: 46803f1e1595e29ea527086438a58391 -work/input/b.e15.B1850G.f09_g16.pi_control.25.cice.r.0041-01-01-00000.nc: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/ice/cice/b.e15.B1850G.f09_g16.pi_control.25.cice.r.0041-01-01-00000.nc - hashes: - binhash: c248b1cb568c0de375f1d54af0f67990 - md5: 311e5f7610d7d093cc0d784031f2adda -work/input/fv0.9x1.25_141008_polemod_ESMFmesh.nc: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - hashes: - binhash: 03f7e7be93046b6185f4f0d40aa525bf - md5: 522432e6af593bc3f4c0ddec22e45ff5 -work/input/global_gx1.bathy.nc: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/ice/cice/global_gx1.bathy.nc - hashes: - binhash: 64af7a2cf94f041a2b2c3d1489a2bab2 - md5: e3bf809ef76eb42b5f538f0f7110c106 -work/input/gx1v6_090205_ESMFmesh.nc: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/share/meshes/gx1v6_090205_ESMFmesh.nc - hashes: - binhash: 7d64c3cc3fbb8a669de3d3aa1b6ed11b - md5: 4b271b651c9242b7e53f365a475e5fdb -work/input/horiz_grid_20010402.ieeer8: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/ocn/pop/gx1v6/grid/horiz_grid_20010402.ieeer8 - hashes: - binhash: bcd54def1b19d8568a97ee0a27e4b565 - md5: 5fa55af74a3fbe0af21e380f1e1fbd2f +work/input/access-om2-1deg-ESMFmesh.nc: + fullpath: /g/data/ik11/inputs/access-om3/0.x.0/1deg/access-om2-1deg-ESMFmesh.nc + hashes: + binhash: db1ebe07724c4b9350947423239e58f0 + md5: 670568bbb1f7f14c534b37ec895af118 +work/input/access-om2-1deg-nomask-ESMFmesh.nc: + fullpath: /g/data/ik11/inputs/access-om3/0.x.0/1deg/access-om2-1deg-nomask-ESMFmesh.nc + hashes: + binhash: 465e2826fc0b9344eda8bcde953160a9 + md5: d40d8512d683a089b6feb343d903ad71 +work/input/grid.nc: + fullpath: /g/data/ik11/inputs/access-om3/0.x.0/1deg/grid.nc + hashes: + binhash: 54a57cd86d71266bb1da943a43de9b45 + md5: 1213e346055ee073fe33dc12578d99c6 +work/input/iced.1900-01-01-10800.nc: + fullpath: /g/data/ik11/inputs/access-om3/0.x.0/1deg/iced.1900-01-01-10800.nc + hashes: + binhash: 4e24498a65a166bf7aaa5f23389eaf60 + md5: 87c012d60c58c65bb56caa98779e5e51 +work/input/kmt.nc: + fullpath: /g/data/ik11/inputs/access-om3/0.x.0/1deg/kmt.nc + hashes: + binhash: b7f0f9db0906873dfb0aa5c7b06f9e61 + md5: 1f9806c646a620378e5257e480bc9df7 work/input/make_rhuss/.git/FETCH_HEAD: fullpath: /g/data/ik11/inputs/JRA-55/RYF/v1-4/make_rhuss/.git/FETCH_HEAD hashes: @@ -661,38 +651,28 @@ work/input/make_ryf/make_ryf.py: hashes: binhash: 9fbb6a9f6bec50ccb2afafecae9a5ff7 md5: c5ef2aeff9516ec76c80e76aef08d352 -work/input/map_rx1_to_gx1v6_nn_open_ocean_nnsm_e1000r300_marginal_sea_170503.nc: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/cpl/gridmaps/rx1/map_rx1_to_gx1v6_nn_open_ocean_nnsm_e1000r300_marginal_sea_170503.nc - hashes: - binhash: 08d812a69269a4010d368b1ad9761a0e - md5: 4099efddb2a939d0341d0b2f53d90ddf -work/input/map_rx1_to_gx1v6_nnsm_e1000r300_170503.nc: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/cpl/gridmaps/rx1/map_rx1_to_gx1v6_nnsm_e1000r300_170503.nc - hashes: - binhash: 199a87fdf86a4b4b1a4c2c7c85b905de - md5: d27e75d8095deb053f58c76af1c0ab68 -work/input/ocean_hgrid_230424.nc: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/ocn/mom/gx1v6/ocean_hgrid_230424.nc - hashes: - binhash: 83c98e9b46c99e033aa1e5dc3fa2371a - md5: e836fcab7b928454709113037e354839 -work/input/ocean_topog_230424.nc: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/ocn/mom/gx1v6/ocean_topog_230424.nc - hashes: - binhash: bf53244fd98c5e9452e002c3af8bb92a - md5: 463ef0be4de016f5a93fe2df46859497 +work/input/ocean_hgrid.nc: + fullpath: /g/data/ik11/inputs/access-om3/0.x.0/1deg/ocean_hgrid.nc + hashes: + binhash: b4895a8dfb1d02da1c5c8b114bbcff05 + md5: 51f58be0f4ea6da2cb438a893f95c689 +work/input/ocean_temp_salt.res.nc: + fullpath: /g/data/ik11/inputs/access-om3/0.x.0/1deg/ocean_temp_salt.res.nc + hashes: + binhash: dba1ab70ca11f3758336dd642a027489 + md5: c5f7e60b5427a4442f111adc65a2d067 work/input/ocean_vgrid.nc: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/ocn/mom/gx1v6/ocean_vgrid.nc + fullpath: /g/data/ik11/inputs/access-om3/0.x.0/1deg/ocean_vgrid.nc hashes: - binhash: 59f8cfa4795f3eb785700789e099b86e - md5: 6d6157af263a5bc52a4ddc9b90958d4c -work/input/rx1_nomask_181022_ESMFmesh.nc: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/share/meshes/rx1_nomask_181022_ESMFmesh.nc + binhash: 4d33e34fa792d43dc7eba7d2f22a05d1 + md5: a1e0b0b0adc363506ff17a362e83f64a +work/input/salt_sfc_restore.nc: + fullpath: /g/data/ik11/inputs/access-om3/0.x.0/1deg/salt_sfc_restore.nc hashes: - binhash: 6a41f15e5c3818b3e82a7c38e2e49a77 - md5: 29b525caef10cae4da5bc64eb1dc5581 -work/input/topography_20090204.ieeei4: - fullpath: /g/data/ik11/inputs/access-om3/0.x.0/cime/ocn/pop/gx1v6/grid/topography_20090204.ieeei4 + binhash: 5e68da4372238720dd46caae3b03787e + md5: b2bd35c44017597ba99b85fb61ed4d72 +work/input/topog.nc: + fullpath: /g/data/ik11/inputs/access-om3/0.x.0/1deg/topog.nc hashes: - binhash: 9b4be5327334aa060f105576edf97d09 - md5: bfbd5e48dfe095d9b8cbb73f58a47e7b + binhash: aa7a3ba180bb0df4958bb79ba651d71f + md5: 4e13d88001b646f3cf4f1c3b8db59f91 diff --git a/nuopc.runconfig b/nuopc.runconfig index d9a8494..81c0407 100644 --- a/nuopc.runconfig +++ b/nuopc.runconfig @@ -116,12 +116,12 @@ ALLCOMP_attributes:: hostname = gadi ice_ncat = 5 mediator_present = true - mesh_atm = ./input/T62_040121_ESMFmesh.nc + mesh_atm = ./input/access-om2-1deg-nomask-ESMFmesh.nc mesh_glc = UNSET - mesh_ice = ./input/gx1v6_090205_ESMFmesh.nc + mesh_ice = ./input/access-om2-1deg-ESMFmesh.nc mesh_lnd = UNSET - mesh_mask = ./input/gx1v6_090205_ESMFmesh.nc - mesh_ocn = ./input/gx1v6_090205_ESMFmesh.nc + mesh_mask = ./input/access-om2-1deg-ESMFmesh.nc + mesh_ocn = ./input/access-om2-1deg-ESMFmesh.nc model_version = unknown ocn2glc_coupling = .false. ocn2glc_levels = 1:10:19:26:30:33:35 @@ -147,8 +147,8 @@ MED_attributes:: atm2lnd_map = unset atm2ocn_map = unset atm2wav_map = unset - atm_nx = 192 - atm_ny = 94 + atm_nx = 360 + atm_ny = 300 budget_ann = 1 budget_daily = 0 budget_inst = 0 @@ -253,8 +253,8 @@ MED_attributes:: history_option_wav_inst = never ice2atm_map = unset ice2wav_smapname = unset - ice_nx = 320 - ice_ny = 384 + ice_nx = 360 + ice_ny = 300 info_debug = 1 lnd2atm_map = unset lnd2rof_map = unset @@ -263,15 +263,15 @@ MED_attributes:: mapuv_with_cart3d = .true. ocn2atm_map = unset ocn2wav_smapname = unset - ocn_nx = 320 - ocn_ny = 384 + ocn_nx = 360 + ocn_ny = 300 ocn_surface_flux_scheme = 0 rof2lnd_map = unset rof2ocn_fmapname = unset - rof2ocn_ice_rmapname = ./input/map_rx1_to_gx1v6_nnsm_e1000r300_170503.nc - rof2ocn_liq_rmapname = ./input/map_rx1_to_gx1v6_nn_open_ocean_nnsm_e1000r300_marginal_sea_170503.nc + rof2ocn_ice_rmapname = unset + rof2ocn_liq_rmapname = unset rof_nx = 360 - rof_ny = 180 + rof_ny = 300 wav2ocn_smapname = unset wav_nx = 0 wav_ny = 0 @@ -328,7 +328,7 @@ OCN_attributes:: ROF_attributes:: Verbosity = off - mesh_rof = ./input/rx1_nomask_181022_ESMFmesh.nc + mesh_rof = ./input/access-om2-1deg-nomask-ESMFmesh.nc :: WAV_attributes::