diff --git a/MOM6 b/MOM6 index b15bc97..dbce657 160000 --- a/MOM6 +++ b/MOM6 @@ -1 +1 @@ -Subproject commit b15bc9780bc630236b048fcfd27b5ad177f55abe +Subproject commit dbce6577ee2537049174b024a1ace3669ba637ff diff --git a/cime_config/testdefs/testlist_mom.xml b/cime_config/testdefs/testlist_mom.xml index 8574fc0..604aa42 100644 --- a/cime_config/testdefs/testlist_mom.xml +++ b/cime_config/testdefs/testlist_mom.xml @@ -246,4 +246,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cime_config/testdefs/testmods_dirs/mom/regional/base/shell_commands b/cime_config/testdefs/testmods_dirs/mom/regional/base/shell_commands new file mode 100644 index 0000000..5ef8c9e --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/mom/regional/base/shell_commands @@ -0,0 +1,16 @@ +./xmlchange OCN_NX=60 +./xmlchange OCN_NY=60 +./xmlchange OCN_DOMAIN_MESH='${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama/ESMF_mesh_panama1_352fd1.nc' +./xmlchange ICE_DOMAIN_MESH='${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama/ESMF_mesh_panama1_352fd1.nc' +./xmlchange MASK_MESH='${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama/ESMF_mesh_panama1_352fd1.nc' +./xmlchange ATM_GRID=TL319 +./xmlchange LND_GRID=TL319 +./xmlchange ATM_DOMAIN_MESH='${DIN_LOC_ROOT}/share/meshes/TL319_151007_ESMFmesh.nc' +./xmlchange LND_DOMAIN_MESH='${DIN_LOC_ROOT}/share/meshes/TL319_151007_ESMFmesh.nc' +./xmlchange MOM6_MEMORY_MODE=dynamic_symmetric +./xmlchange RUN_STARTDATE=2000-01-01 +./xmlchange ROF2OCN_LIQ_RMAPNAME='${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama/GLOFAS_to_panama1_map_r20_f40_nnsm.nc' +./xmlchange ROF2OCN_ICE_RMAPNAME='${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama/GLOFAS_to_panama1_map_r20_f40_nnsm.nc' + +# Set PE Layout +./xmlchange NTASKS_OCN=20 \ No newline at end of file diff --git a/cime_config/testdefs/testmods_dirs/mom/regional/base/user_nl_mom b/cime_config/testdefs/testmods_dirs/mom/regional/base/user_nl_mom new file mode 100644 index 0000000..41e932c --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/mom/regional/base/user_nl_mom @@ -0,0 +1,98 @@ +!INPUTDIR is set by the MOM_input.yaml because it requires a hard-coded path +TRIPOLAR_N = False +REENTRANT_X = False +REENTRANT_Y = False +NIGLOBAL = 60 +NJGLOBAL = 60 +GRID_CONFIG = mosaic +GRID_FILE = ocean_hgrid_panama1_352fd1.nc +TOPO_CONFIG = file +TOPO_FILE = ocean_topog_panama1_352fd1.nc +MAXIMUM_DEPTH = 3431.7499950346473 +MINIMUM_DEPTH = 9.5 +NK = 75 +COORD_CONFIG = none +ALE_COORDINATE_CONFIG = FILE:ocean_vgrid_panama1_352fd1.nc +REGRIDDING_COORDINATE_MODE = Z* + +! Timesteps (based on grid resolution) +DT = 300.0 +DT_THERM = 900.0 + +! Enable tidal forcing in MOM6 +TIDES = True + +! Enable M2 tidal constituent +TIDE_M2 = True + +! Drag coefficient for tidal forcing +CD_TIDES = 0.0018 + +! Use equilibrium phase for tides +TIDE_USE_EQ_PHASE = True + +! Reference date for tidal forcing +TIDE_REF_DATE = 2000, 01, 01 + +! Add equilibrium phase to OBC tides +OBC_TIDE_ADD_EQ_PHASE = True + +! Number of tidal constituents +OBC_TIDE_N_CONSTITUENTS = 1 + +! List of tidal constituents +OBC_TIDE_CONSTITUENTS = "M2" + +! Reference date for OBC tidal forcing +OBC_TIDE_REF_DATE = 2000, 01, 01 + +! Chlorophyll data file +CHL_FILE = seawifs-clim-1997-2010-panama1.nc + +! Enable chlorophyll from file +CHL_FROM_FILE = TRUE + +! Enable variable penetration for shortwave +VAR_PEN_SW = TRUE + +! Number of shortwave penetration bands +PEN_SW_NBANDS = 3 + +! Initial conditions +INIT_LAYERS_FROM_Z_FILE = True +Z_INIT_ALE_REMAPPING = True +TEMP_SALT_INIT_VERTICAL_REMAP_ONLY = True +DEPRESS_INITIAL_SURFACE = True +VELOCITY_CONFIG = file +TEMP_SALT_Z_INIT_FILE = init_tracers.nc +SURFACE_HEIGHT_IC_FILE = init_eta.nc +VELOCITY_FILE = init_vel.nc +Z_INIT_FILE_PTEMP_VAR = temp +Z_INIT_FILE_SALT_VAR = salt +SURFACE_HEIGHT_IC_VAR = eta_t +U_IC_VAR = u +V_IC_VAR = v + +! Open boundary conditions +OBC_NUMBER_OF_SEGMENTS = 4 +OBC_FREESLIP_VORTICITY = False +OBC_FREESLIP_STRAIN = False +OBC_COMPUTED_VORTICITY = True +OBC_COMPUTED_STRAIN = True +OBC_ZERO_BIHARMONIC = True +OBC_TRACER_RESERVOIR_LENGTH_SCALE_OUT = 3.0E+04 +OBC_TRACER_RESERVOIR_LENGTH_SCALE_IN = 3000.0 +BRUSHCUTTER_MODE = True +OBC_SEGMENT_001 = "J=0,I=0:N,FLATHER,ORLANSKI,NUDGED,ORLANSKI_TAN,NUDGED_TAN" +OBC_SEGMENT_001_VELOCITY_NUDGING_TIMESCALES = 0.3, 360.0 +OBC_SEGMENT_001_DATA = "U=file:forcing_obc_segment_001.nc(u),V=file:forcing_obc_segment_001.nc(v),SSH=file:forcing_obc_segment_001.nc(eta),TEMP=file:forcing_obc_segment_001.nc(temp),SALT=file:forcing_obc_segment_001.nc(salt),Uamp=file:tu_segment_001.nc(uamp),Uphase=file:tu_segment_001.nc(uphase),Vamp=file:tu_segment_001.nc(vamp),Vphase=file:tu_segment_001.nc(vphase),SSHamp=file:tz_segment_001.nc(zamp),SSHphase=file:tz_segment_001.nc(zphase)" +OBC_SEGMENT_002 = "J=N,I=N:0,FLATHER,ORLANSKI,NUDGED,ORLANSKI_TAN,NUDGED_TAN" +OBC_SEGMENT_002_VELOCITY_NUDGING_TIMESCALES = 0.3, 360.0 +OBC_SEGMENT_002_DATA = "U=file:forcing_obc_segment_002.nc(u),V=file:forcing_obc_segment_002.nc(v),SSH=file:forcing_obc_segment_002.nc(eta),TEMP=file:forcing_obc_segment_002.nc(temp),SALT=file:forcing_obc_segment_002.nc(salt),Uamp=file:tu_segment_002.nc(uamp),Uphase=file:tu_segment_002.nc(uphase),Vamp=file:tu_segment_002.nc(vamp),Vphase=file:tu_segment_002.nc(vphase),SSHamp=file:tz_segment_002.nc(zamp),SSHphase=file:tz_segment_002.nc(zphase)" +OBC_SEGMENT_003 = "I=0,J=N:0,FLATHER,ORLANSKI,NUDGED,ORLANSKI_TAN,NUDGED_TAN" +OBC_SEGMENT_003_VELOCITY_NUDGING_TIMESCALES = 0.3, 360.0 +OBC_SEGMENT_003_DATA = "U=file:forcing_obc_segment_003.nc(u),V=file:forcing_obc_segment_003.nc(v),SSH=file:forcing_obc_segment_003.nc(eta),TEMP=file:forcing_obc_segment_003.nc(temp),SALT=file:forcing_obc_segment_003.nc(salt),Uamp=file:tu_segment_003.nc(uamp),Uphase=file:tu_segment_003.nc(uphase),Vamp=file:tu_segment_003.nc(vamp),Vphase=file:tu_segment_003.nc(vphase),SSHamp=file:tz_segment_003.nc(zamp),SSHphase=file:tz_segment_003.nc(zphase)" +OBC_SEGMENT_004 = "I=N,J=0:N,FLATHER,ORLANSKI,NUDGED,ORLANSKI_TAN,NUDGED_TAN" +OBC_SEGMENT_004_VELOCITY_NUDGING_TIMESCALES = 0.3, 360.0 +OBC_SEGMENT_004_DATA = "U=file:forcing_obc_segment_004.nc(u),V=file:forcing_obc_segment_004.nc(v),SSH=file:forcing_obc_segment_004.nc(eta),TEMP=file:forcing_obc_segment_004.nc(temp),SALT=file:forcing_obc_segment_004.nc(salt),Uamp=file:tu_segment_004.nc(uamp),Uphase=file:tu_segment_004.nc(uphase),Vamp=file:tu_segment_004.nc(vamp),Vphase=file:tu_segment_004.nc(vphase),SSHamp=file:tz_segment_004.nc(zamp),SSHphase=file:tz_segment_004.nc(zphase)" +! We need to add one line at the end so we can concatenate other testing user_nl_mom files (if you don't they just get added to the last line) diff --git a/cime_config/testdefs/testmods_dirs/mom/regional/bgc/shell_commands b/cime_config/testdefs/testmods_dirs/mom/regional/bgc/shell_commands new file mode 100644 index 0000000..028122d --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/mom/regional/bgc/shell_commands @@ -0,0 +1,16 @@ +./xmlchange OCN_NX=60 +./xmlchange OCN_NY=60 +./xmlchange OCN_DOMAIN_MESH='${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama-bgc/ESMF_mesh_panama1_5490e0.nc' +./xmlchange ICE_DOMAIN_MESH='${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama-bgc/ESMF_mesh_panama1_5490e0.nc' +./xmlchange MASK_MESH='${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama-bgc/ESMF_mesh_panama1_5490e0.nc' +./xmlchange ATM_GRID=TL319 +./xmlchange LND_GRID=TL319 +./xmlchange ATM_DOMAIN_MESH='${DIN_LOC_ROOT}/share/meshes/TL319_151007_ESMFmesh.nc' +./xmlchange LND_DOMAIN_MESH='${DIN_LOC_ROOT}/share/meshes/TL319_151007_ESMFmesh.nc' +./xmlchange MOM6_MEMORY_MODE=dynamic_symmetric +./xmlchange RUN_STARTDATE=2000-01-01 +./xmlchange ROF2OCN_LIQ_RMAPNAME='${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama-bgc/GLOFAS_to_panama1_map_r20_f40_nnsm.nc' +./xmlchange ROF2OCN_ICE_RMAPNAME='${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama-bgc/GLOFAS_to_panama1_map_r20_f40_nnsm.nc' + +# Set PE Layout +./xmlchange NTASKS_OCN=30 \ No newline at end of file diff --git a/cime_config/testdefs/testmods_dirs/mom/regional/bgc/user_nl_mom b/cime_config/testdefs/testmods_dirs/mom/regional/bgc/user_nl_mom new file mode 100644 index 0000000..d549f68 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/mom/regional/bgc/user_nl_mom @@ -0,0 +1,132 @@ +!INPUTDIR is set by the MOM_input.yaml because it requires a hard-coded path +TRIPOLAR_N = False +REENTRANT_X = False +REENTRANT_Y = False +NIGLOBAL = 60 +NJGLOBAL = 60 +GRID_CONFIG = mosaic +GRID_FILE = ocean_hgrid_panama1_5490e0.nc +TOPO_CONFIG = file +TOPO_FILE = ocean_topog_panama1_5490e0.nc +MAXIMUM_DEPTH = 3431.7499950346473 +MINIMUM_DEPTH = 9.5 +NK = 75 +COORD_CONFIG = none +ALE_COORDINATE_CONFIG = FILE:ocean_vgrid_panama1_5490e0.nc +REGRIDDING_COORDINATE_MODE = Z* + +! Timesteps (based on grid resolution) +DT = 300.0 +DT_THERM = 900.0 + +! Enable tidal forcing in MOM6 +TIDES = True + +! Enable M2 tidal constituent +TIDE_M2 = True + +! Drag coefficient for tidal forcing +CD_TIDES = 0.0018 + +! Use equilibrium phase for tides +TIDE_USE_EQ_PHASE = True + +! Reference date for tidal forcing +TIDE_REF_DATE = 2000, 01, 01 + +! Add equilibrium phase to OBC tides +OBC_TIDE_ADD_EQ_PHASE = True + +! Number of tidal constituents +OBC_TIDE_N_CONSTITUENTS = 1 + +! List of tidal constituents +OBC_TIDE_CONSTITUENTS = "M2" + +! Reference date for OBC tidal forcing +OBC_TIDE_REF_DATE = 2000, 01, 01 + +! Maximum number of tracer fields, bumped to accomodate MARBL tracers +MAX_FIELDS = 400 + +! MARBL initial conditions file +MARBL_TRACERS_IC_FILE = ecosys_jan_IC_omip_latlon_1x1_180W_c250613.nc + +! MARBL sedimentary iron flux file +MARBL_FESEDFLUX_FILE = fesedflux_total_reduce_oxic_panama1_5490e0.nc + +! MARBL event iron flux file +MARBL_FEVENTFLUX_FILE = feventflux_5gmol_panama1_5490e0.nc + +! MARBL event iron flux reduced file +MARBL_FESEDFLUXRED_FILE = feventfluxred_5gmol_panama1_5490e0.nc + +! Enable river nutrient fluxes in MOM6 +READ_RIV_FLUXES = True + +! River nutrient flux file +RIV_FLUX_FILE = river_nutrients_panama1_5490e0_nnsm.nc + +! Initial conditions +INIT_LAYERS_FROM_Z_FILE = True +Z_INIT_ALE_REMAPPING = True +TEMP_SALT_INIT_VERTICAL_REMAP_ONLY = True +DEPRESS_INITIAL_SURFACE = True +VELOCITY_CONFIG = file +TEMP_SALT_Z_INIT_FILE = init_tracers.nc +SURFACE_HEIGHT_IC_FILE = init_eta.nc +VELOCITY_FILE = init_vel.nc +Z_INIT_FILE_PTEMP_VAR = temp +Z_INIT_FILE_SALT_VAR = salt +SURFACE_HEIGHT_IC_VAR = eta_t +U_IC_VAR = u +V_IC_VAR = v + +! Open boundary conditions +OBC_NUMBER_OF_SEGMENTS = 4 +OBC_FREESLIP_VORTICITY = False +OBC_FREESLIP_STRAIN = False +OBC_COMPUTED_VORTICITY = True +OBC_COMPUTED_STRAIN = True +OBC_ZERO_BIHARMONIC = True +OBC_TRACER_RESERVOIR_LENGTH_SCALE_OUT = 3.0E+04 +OBC_TRACER_RESERVOIR_LENGTH_SCALE_IN = 3000.0 +BRUSHCUTTER_MODE = True +OBC_SEGMENT_001 = "J=0,I=0:N,FLATHER,ORLANSKI,NUDGED,ORLANSKI_TAN,NUDGED_TAN" +OBC_SEGMENT_001_VELOCITY_NUDGING_TIMESCALES = 0.3, 360.0 +OBC_SEGMENT_001_DATA = "U=file:forcing_obc_segment_001.nc(u),V=file:forcing_obc_segment_001.nc(v),SSH=file:forcing_obc_segment_001.nc(eta),TEMP=file:forcing_obc_segment_001.nc(temp),SALT=file:forcing_obc_segment_001.nc(salt),Uamp=file:tu_segment_001.nc(uamp),Uphase=file:tu_segment_001.nc(uphase),Vamp=file:tu_segment_001.nc(vamp),Vphase=file:tu_segment_001.nc(vphase),SSHamp=file:tz_segment_001.nc(zamp),SSHphase=file:tz_segment_001.nc(zphase)" +OBC_SEGMENT_002 = "J=N,I=N:0,FLATHER,ORLANSKI,NUDGED,ORLANSKI_TAN,NUDGED_TAN" +OBC_SEGMENT_002_VELOCITY_NUDGING_TIMESCALES = 0.3, 360.0 +OBC_SEGMENT_002_DATA = "U=file:forcing_obc_segment_002.nc(u),V=file:forcing_obc_segment_002.nc(v),SSH=file:forcing_obc_segment_002.nc(eta),TEMP=file:forcing_obc_segment_002.nc(temp),SALT=file:forcing_obc_segment_002.nc(salt),Uamp=file:tu_segment_002.nc(uamp),Uphase=file:tu_segment_002.nc(uphase),Vamp=file:tu_segment_002.nc(vamp),Vphase=file:tu_segment_002.nc(vphase),SSHamp=file:tz_segment_002.nc(zamp),SSHphase=file:tz_segment_002.nc(zphase)" +OBC_SEGMENT_003 = "I=0,J=N:0,FLATHER,ORLANSKI,NUDGED,ORLANSKI_TAN,NUDGED_TAN" +OBC_SEGMENT_003_VELOCITY_NUDGING_TIMESCALES = 0.3, 360.0 +OBC_SEGMENT_003_DATA = "U=file:forcing_obc_segment_003.nc(u),V=file:forcing_obc_segment_003.nc(v),SSH=file:forcing_obc_segment_003.nc(eta),TEMP=file:forcing_obc_segment_003.nc(temp),SALT=file:forcing_obc_segment_003.nc(salt),Uamp=file:tu_segment_003.nc(uamp),Uphase=file:tu_segment_003.nc(uphase),Vamp=file:tu_segment_003.nc(vamp),Vphase=file:tu_segment_003.nc(vphase),SSHamp=file:tz_segment_003.nc(zamp),SSHphase=file:tz_segment_003.nc(zphase)" +OBC_SEGMENT_004 = "I=N,J=0:N,FLATHER,ORLANSKI,NUDGED,ORLANSKI_TAN,NUDGED_TAN" +OBC_SEGMENT_004_VELOCITY_NUDGING_TIMESCALES = 0.3, 360.0 +OBC_SEGMENT_004_DATA = "U=file:forcing_obc_segment_004.nc(u),V=file:forcing_obc_segment_004.nc(v),SSH=file:forcing_obc_segment_004.nc(eta),TEMP=file:forcing_obc_segment_004.nc(temp),SALT=file:forcing_obc_segment_004.nc(salt),Uamp=file:tu_segment_004.nc(uamp),Uphase=file:tu_segment_004.nc(uphase),Vamp=file:tu_segment_004.nc(vamp),Vphase=file:tu_segment_004.nc(vphase),SSHamp=file:tz_segment_004.nc(zamp),SSHphase=file:tz_segment_004.nc(zphase)" +OBC_DATA_PO4=PO4_obc_segment.nc(PO4) +OBC_DATA_NO3=NO3_obc_segment.nc(NO3) +OBC_DATA_SiO3=SiO3_obc_segment.nc(SiO3) +OBC_DATA_NH4=NH4_obc_segment.nc(NH4) +OBC_DATA_Fe=Fe_obc_segment.nc(Fe) +OBC_DATA_Lig=Lig_obc_segment.nc(Lig) +OBC_DATA_O2=O2_obc_segment.nc(O2) +OBC_DATA_DIC=DIC_obc_segment.nc(DIC) +OBC_DATA_DIC_ALT_CO2=DIC_ALT_CO2_obc_segment.nc(DIC_ALT_CO2) +OBC_DATA_ALK=ALK_obc_segment.nc(ALK) +OBC_DATA_ALK_ALT_CO2=ALK_ALT_CO2_obc_segment.nc(ALK_ALT_CO2) +OBC_DATA_DOC=DOC_obc_segment.nc(DOC) +OBC_DATA_DON=DON_obc_segment.nc(DON) +OBC_DATA_DOP=DOP_obc_segment.nc(DOP) +OBC_DATA_DOPr=DOPr_obc_segment.nc(DOPr) +OBC_DATA_DONr=DONr_obc_segment.nc(DONr) +OBC_DATA_DOCr=DOCr_obc_segment.nc(DOCr) +OBC_DATA_microzooC=microzooC_obc_segment.nc(microzooC) +OBC_DATA_mesozooC=mesozooC_obc_segment.nc(mesozooC) +OBC_DATA_spChl=spChl_obc_segment.nc(spChl) +OBC_DATA_spC=spC_obc_segment.nc(spC) +OBC_DATA_spP=spP_obc_segment.nc(spP) +OBC_DATA_spFe=spFe_obc_segment.nc(spFe) +OBC_DATA_diatChl=diatChl_obc_segment.nc(diatChl) +OBC_DATA_diatC=diatC_obc_segment.nc(diatC) +! We need to add one line at the end so we can concatenate other testing user_nl_mom files (if you don't they just get added to the last line) diff --git a/param_templates/MOM_input.yaml b/param_templates/MOM_input.yaml index fbbcc35..5ad735c 100644 --- a/param_templates/MOM_input.yaml +++ b/param_templates/MOM_input.yaml @@ -34,7 +34,10 @@ Global: description: | "The directory in which input files are found." datatype: string - value: ${DIN_LOC_ROOT}/ocn/mom/${OCN_GRID} + value: + $MOM6_DOMAIN_TYPE == "REGIONAL" and $TEST == True and $MARBL_CONFIG == "off": ${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama + $MOM6_DOMAIN_TYPE == "REGIONAL" and $TEST == True and $MARBL_CONFIG != "off": ${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama-bgc + else: ${DIN_LOC_ROOT}/ocn/mom/${OCN_GRID} TRIPOLAR_N: description: | "[Boolean] default = False diff --git a/param_templates/json/MOM_input.json b/param_templates/json/MOM_input.json index 4958db0..408b588 100644 --- a/param_templates/json/MOM_input.json +++ b/param_templates/json/MOM_input.json @@ -3,7 +3,11 @@ "INPUTDIR": { "description": "\"The directory in which input files are found.\"\n", "datatype": "string", - "value": "${DIN_LOC_ROOT}/ocn/mom/${OCN_GRID}" + "value": { + "$MOM6_DOMAIN_TYPE == \"REGIONAL\" and $TEST == True and $MARBL_CONFIG == \"off\"": "${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama", + "$MOM6_DOMAIN_TYPE == \"REGIONAL\" and $TEST == True and $MARBL_CONFIG != \"off\"": "${DIN_LOC_ROOT}/ocn/mom/croc/testing_data/panama-bgc", + "else": "${DIN_LOC_ROOT}/ocn/mom/${OCN_GRID}" + } }, "TRIPOLAR_N": { "description": "\"[Boolean] default = False\nUse tripolar connectivity at the northern edge of the\ndomain. With TRIPOLAR_N, NIGLOBAL must be even.\"\n",