diff --git a/.github/workflows/srt.yml b/.github/workflows/srt.yml index 5a45a82a..a94205d7 100644 --- a/.github/workflows/srt.yml +++ b/.github/workflows/srt.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [ 3.10.9 ] + python-version: [ 3.x ] env: CC: mpicc FC: mpifort diff --git a/cime_config/buildnml b/cime_config/buildnml index 0206ac7b..42569a7a 100755 --- a/cime_config/buildnml +++ b/cime_config/buildnml @@ -52,10 +52,11 @@ def _create_drv_namelists(case, infile, confdir, nmlgen, files): config["mask_grid"] = case.get_value("MASK_GRID") for val in ("HIST", "REST", "STOP"): config[val.lower()+"_option"] = case.get_value(val+"_OPTION") - + config["comp_ocn"] = case.get_value("COMP_OCN") + atm_grid = case.get_value("ATM_GRID") lnd_grid = case.get_value("LND_GRID") ice_grid = case.get_value("ICE_GRID") @@ -113,7 +114,7 @@ def _create_drv_namelists(case, infile, confdir, nmlgen, files): config["COMP_ROF"] = case.get_value("COMP_ROF") config["COMP_WAV"] = case.get_value("COMP_WAV") config["CAMDEV"] = "True" if "CAM70" in case.get_value("COMPSET") else "False" - + if ( ( case.get_value("COMP_ROF") == "mosart" @@ -135,6 +136,12 @@ def _create_drv_namelists(case, infile, confdir, nmlgen, files): config['wav_ice_coupling'] = 'ww3' in config['COMP_WAV'] and config['COMP_ICE'] == 'cice' + if config["COMP_OCN"] == "blom": + if "ecosys" in case.get_value("BLOM_TRACER_MODULES"): + config["dms_from_ocn"] = "on" + else: + config["dms_from_ocn"] = "off" + # ---------------------------------------------------- # Initialize namelist defaults # ---------------------------------------------------- @@ -156,7 +163,7 @@ def _create_drv_namelists(case, infile, confdir, nmlgen, files): add_gusts = literal_to_python_value(nmlgen.get_value("add_gusts"), type_="logical") if add_gusts: expect("CAM70" in case.get_value("COMPSET"),"ERROR: add_gusts can only be set if CAM70 in compset {}".format(case.get_value("COMPSET"))) - + # -------------------------------- # Overwrite: set component coupling frequencies # -------------------------------- @@ -206,7 +213,7 @@ def _create_drv_namelists(case, infile, confdir, nmlgen, files): mindt = min(mindt, cpl_dt) # Here we convert "nsteps" to "nseconds", this simplifies the fortran - + for val in ("REST", "HIST", "STOP"): if case.get_value(val+"_OPTION") == "nsteps": nsteps = case.get_value(val+"_N") @@ -217,7 +224,7 @@ def _create_drv_namelists(case, infile, confdir, nmlgen, files): else: nmlgen.set_value("stop_n", value=mindt*nsteps) - + # sanity check comp_atm = case.get_value("COMP_ATM") if comp_atm is not None and comp_atm not in ("datm", "xatm", "satm"): @@ -640,7 +647,7 @@ def buildnml(case, caseroot, component): major = line[-2] if "MAJOR" in line else major minor = line[-2] if "MINOR" in line else minor logger.debug("ESMF version major {} minor {}".format(major, minor)) - expect(int(major) >= 8 and int(minor) >=6, "ESMF version should be 8.6.1 or newer") + expect(int(major) >= 8 and int(minor) >=4, "ESMF version should be 8.4.1 or newer") confdir = os.path.join(case.get_value("CASEBUILD"), "cplconf") if not os.path.isdir(confdir): @@ -682,7 +689,7 @@ def buildnml(case, caseroot, component): create_namelist_infile(case, user_nl_file, namelist_infile, infile_text) infile = [namelist_infile] - + # create the files nuopc.runconfig, nuopc.runseq, drv_in and drv_flds_in _create_drv_namelists(case, infile, confdir, nmlgen, files) diff --git a/cime_config/namelist_definition_drv.xml b/cime_config/namelist_definition_drv.xml index e52f6735..80a59931 100644 --- a/cime_config/namelist_definition_drv.xml +++ b/cime_config/namelist_definition_drv.xml @@ -889,7 +889,7 @@ .false. - + integer @@ -2450,7 +2450,7 @@ - + logical flds ALLCOMP_attributes @@ -2459,10 +2459,11 @@ .false. + .true. - + logical flds ALLCOMP_attributes diff --git a/mediator/esmFldsExchange_cesm_mod.F90 b/mediator/esmFldsExchange_cesm_mod.F90 index abc901ba..0f6ccf02 100644 --- a/mediator/esmFldsExchange_cesm_mod.F90 +++ b/mediator/esmFldsExchange_cesm_mod.F90 @@ -1721,7 +1721,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) else if ( fldchk(is_local%wrap%FBImp(compocn,compocn), 'Faoo_fdms_ocn', rc=rc) .and. & fldchk(is_local%wrap%FBexp(compatm) , 'Faoo_fdms_ocn', rc=rc)) then - call addmap_from(compocn, 'Faoo_fdms_ocn', compocn, mapconsd, 'one', ocn2atm_map) + call addmap_from(compocn, 'Faoo_fdms_ocn', compatm, mapconsd, 'one', ocn2atm_map) ! custom merge in med_phases_prep_atm end if end if @@ -1735,7 +1735,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) else if ( fldchk(is_local%wrap%FBImp(compocn,compocn), 'Faoo_fbrf_ocn', rc=rc) .and. & fldchk(is_local%wrap%FBexp(compatm) , 'Faoo_fbrf_ocn', rc=rc)) then - call addmap_from(compocn, 'Faoo_fbrf_ocn', compocn, mapconsd, 'one', ocn2atm_map) + call addmap_from(compocn, 'Faoo_fbrf_ocn', compatm, mapconsd, 'one', ocn2atm_map) ! custom merge in med_phases_prep_atm end if end if @@ -1749,7 +1749,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) else if ( fldchk(is_local%wrap%FBImp(compocn,compocn), 'Faoo_fn2o_ocn', rc=rc) .and. & fldchk(is_local%wrap%FBexp(compatm) , 'Faoo_fn2o_ocn', rc=rc)) then - call addmap_from(compocn, 'Faoo_fn2o_ocn', compocn, mapconsd, 'one', ocn2atm_map) + call addmap_from(compocn, 'Faoo_fn2o_ocn', compatm, mapconsd, 'one', ocn2atm_map) ! custom merge in med_phases_prep_atm end if end if @@ -1763,7 +1763,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) else if ( fldchk(is_local%wrap%FBImp(compocn,compocn), 'Faoo_fnh3_ocn', rc=rc) .and. & fldchk(is_local%wrap%FBexp(compatm) , 'Faoo_fnh3_ocn', rc=rc)) then - call addmap_from(compocn, 'Faoo_fnh3_ocn', compocn, mapconsd, 'one', ocn2atm_map) + call addmap_from(compocn, 'Faoo_fnh3_ocn', compatm, mapconsd, 'one', ocn2atm_map) ! custom merge in med_phases_prep_atm end if end if