From bb7b71015bfd08ab0fda15c13e49105bc3761c92 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Fri, 15 Apr 2022 19:00:56 -0600 Subject: [PATCH 01/25] added skip_restart_read logic needed for CTSM spin-up runs --- datm/atm_comp_nuopc.F90 | 8 ++++++-- datm/cime_config/config_component.xml | 11 +++++++++++ datm/cime_config/namelist_definition_datm.xml | 13 +++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/datm/atm_comp_nuopc.F90 b/datm/atm_comp_nuopc.F90 index 2c2a8825d..26cff03d3 100644 --- a/datm/atm_comp_nuopc.F90 +++ b/datm/atm_comp_nuopc.F90 @@ -131,6 +131,7 @@ module cdeps_datm_comp character(CL) :: restfilm = nullstr ! model restart file namelist integer :: nx_global ! global nx integer :: ny_global ! global ny + logical :: skip_restart_read = .false. ! true => skip restart read in continuation run ! linked lists type(fldList_type) , pointer :: fldsImport => null() @@ -227,7 +228,8 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) namelist / datm_nml / datamode, & model_meshfile, model_maskfile, & nx_global, ny_global, restfilm, iradsw, factorFn_data, factorFn_mesh, & - flds_presaero, flds_co2, flds_wiso, bias_correct, anomaly_forcing + flds_presaero, flds_co2, flds_wiso, bias_correct, anomaly_forcing, & + skip_restart_read rc = ESMF_SUCCESS @@ -268,6 +270,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) call shr_mpi_bcast(flds_presaero , mpicom, 'flds_presaero') call shr_mpi_bcast(flds_co2 , mpicom, 'flds_co2') call shr_mpi_bcast(flds_wiso , mpicom, 'flds_wiso') + call shr_mpi_bcast(skip_restart_read , mpicom, 'skip_restart_read') ! write namelist input to standard out if (my_task == main_task) then @@ -284,6 +287,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) write(logunit,F02)' flds_presaero = ',flds_presaero write(logunit,F02)' flds_co2 = ',flds_co2 write(logunit,F02)' flds_wiso = ',flds_wiso + write(logunit,F02)' skip_restart_read = ',skip_restart_read end if ! Validate sdat datamode @@ -573,7 +577,7 @@ subroutine datm_comp_run(importState, exportState, target_ymd, target_tod, targe end select ! Read restart if needed - if (restart_read) then + if (restart_read .and. .not. skip_restart_read) then select case (trim(datamode)) case('CORE2_NYF','CORE2_IAF') call datm_datamode_core2_restart_read(restfilm, inst_suffix, logunit, my_task, mpicom, sdat) diff --git a/datm/cime_config/config_component.xml b/datm/cime_config/config_component.xml index 0e961df1a..a06eacfd8 100644 --- a/datm/cime_config/config_component.xml +++ b/datm/cime_config/config_component.xml @@ -292,6 +292,17 @@ ending year to loop data over + + logical + TRUE,FALSE + FALSE + run_component_datm + env_run.xml + If set to true, than datm restarts will not be read on a continuation run. + This capability is used, for example, in CTSM spinup runs. + + + ========================================= DATM naming conventions in compset name diff --git a/datm/cime_config/namelist_definition_datm.xml b/datm/cime_config/namelist_definition_datm.xml index 22c70ae90..32984f6e5 100644 --- a/datm/cime_config/namelist_definition_datm.xml +++ b/datm/cime_config/namelist_definition_datm.xml @@ -316,4 +316,17 @@ + + logical + datm + datm_nml + + If set to true, than datm restarts will not be read on a continuation run. + This capability is used, for example, in CTSM spinup runs. + + + $DATM_SKIP_RESTART_READ + + + From 310b3997d30b9a6fda62c2a739a65c49d649ed12 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Sat, 16 Apr 2022 09:10:21 -0600 Subject: [PATCH 02/25] addition -f new streams for datm --- datm/cime_config/config_component.xml | 5 +- datm/cime_config/namelist_definition_datm.xml | 11 +- datm/cime_config/stream_definition_datm.xml | 207 ++++++++++++++++++ 3 files changed, 221 insertions(+), 2 deletions(-) diff --git a/datm/cime_config/config_component.xml b/datm/cime_config/config_component.xml index a06eacfd8..c8ff2f3ec 100644 --- a/datm/cime_config/config_component.xml +++ b/datm/cime_config/config_component.xml @@ -10,7 +10,7 @@ This file may have atm desc entries. --> - Data driven ATM + Data driven ATM QIAN data set QIAN with water isotopes CRUNCEP data set @@ -23,6 +23,9 @@ COREv2 interannual forcing interannual JRA55 forcing interannual JRA55 forcing, v1.4, through 2018 + JRA55 Repeat Year Forcing v1.3 1984-1985 + JRA55 Repeat Year Forcing v1.3 1990-1991 + JRA55 Repeat Year Forcing v1.3 2003-2004 ERA5 interannual forcing diff --git a/datm/cime_config/namelist_definition_datm.xml b/datm/cime_config/namelist_definition_datm.xml index 32984f6e5..4a137b4f9 100644 --- a/datm/cime_config/namelist_definition_datm.xml +++ b/datm/cime_config/namelist_definition_datm.xml @@ -50,7 +50,16 @@ CORE2_IAF.GCGCS.PREC,CORE2_IAF.GISS.LWDN,CORE2_IAF.GISS.SWDN,CORE2_IAF.GISS.SWUP,CORE2_IAF.NCEP.DN10,CORE2_IAF.NCEP.Q_10,CORE2_IAF.NCEP.SLP_,CORE2_IAF.NCEP.T_10,CORE2_IAF.NCEP.U_10,CORE2_IAF.NCEP.V_10,CORE2_IAF.CORE2.ArcFactor - CORE_IAF_JRA_1p4_2018.GCGCS.PREC,CORE_IAF_JRA_1p4_2018.GISS.LWDN,CORE_IAF_JRA_1p4_2018.GISS.SWDN,CORE_IAF_JRA_1p4_2018.NCEP.Q_10,CORE_IAF_JRA_1p4_2018.NCEP.SLP_,CORE_IAF_JRA_1p4_2018.NCEP.T_10,CORE_IAF_JRA_1p4_2018.NCEP.U_10,CORE_IAF_JRA_1p4_2018.NCEP.V_10 + CORE_IAF_JRA_1p4_2018.GCGCS.PREC,CORE_IAF_JRA_1p4_2018.GISS.LWDN,CORE_IAF_JRA_1p4_2018.GISS.SWDN,CORE_IAF_JRA_1p4_2018.NCEP.Q_10,CORE_IAF_JRA_1p4_2018.NCEP.SLP_,CORE_IAF_JRA_1p4_2018.NCEP.T_10,CORE_IAF_JRA_1p4_2018.NCEP.U_10,CORE_IAF_JRA_1p4_2018.NCEP.V_10 + + + CORE_RYF8485_JRA.GISS.LWDN,CORE_RYF8485_JRA.GISS.SWDN,CORE_RYF8485_JRA.GCGCS,CORE_RYF8485_JRA.NCEP + + + CORE_RYF9091_JRA.GISS.LWDN,CORE_RYF9091_JRA.GISS.SWDN,CORE_RYF9091_JRA.GCGCS,CORE_RYF9091_JRA.NCEP + + + CORE_RYF0304_JRA.GISS.LWDN,CORE_RYF0304_JRA.GISS.SWDN,CORE_RYF0304_JRA.GCGCS,CORE_RYF0304_JRA.NCEP CORE_IAF_JRA.PREC,CORE_IAF_JRA.LWDN,CORE_IAF_JRA.SWDN,CORE_IAF_JRA.Q_10,CORE_IAF_JRA.SLP_,CORE_IAF_JRA.T_10,CORE_IAF_JRA.U_10,CORE_IAF_JRA.V_10 diff --git a/datm/cime_config/stream_definition_datm.xml b/datm/cime_config/stream_definition_datm.xml index af7928349..1f35fd578 100644 --- a/datm/cime_config/stream_definition_datm.xml +++ b/datm/cime_config/stream_definition_datm.xml @@ -37,6 +37,9 @@ CORE2_IAF = CORE2 intra-annual year forcing (for forcing POP and CICE) CORE_IAF_JRA = JRA55 intra-annual year forcing (for forcing POP and CICE) CORE_IAF_JRA_1p4_2018 = JRA55 intra-annual year forcing, v1.4, through 2018 (for forcing POP and CICE) + CORE_RYF8485_JRA = JRA55 repeat year forcing, v1.3, 1984-1985 (for forcing POP and CICE) + CORE_RYF9091_JRA = JRA55 repeat year forcing, v1.3, 1990-1991 (for forcing POP and CICE) + CORE_RYF0304_JRA = JRA55 repeat year forcing, v1.3, 2003-2004 (for forcing POP and CICE) ERA5 = ERA5 intra-annual year forcing CPLHIST = Streams for lnd or ocn/ice forcing used for spinup @@ -2312,6 +2315,179 @@ single + + + + + + RAF_8485.JRA.v1.3.radiation.lwdn.TL319.180404.nc + RAF_8485.JRA.v1.3.radiation.swdn.TL319.180404.nc + RAF_8485.JRA.v1.3.prec.TL319.180404.nc + RAF_8485.JRA.v1.3.states.TL319.180404.nc + + + 1984 + + + 1984 + + + + + + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc + + + $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_9091.JRA.v1.3.radiation.lwdn.TL319.180404.nc + + + lwdn Faxa_lwdn + + null + + bilinear + + u:v + 1 + 1990 + 1990 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc + + + $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_9091.JRA.v1.3.radiation.swdn.TL319.180404.nc + + + swdn Faxa_swdn + + null + + bilinear + + u:v + 1 + 1990 + 1990 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc + + + $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_9091.JRA.v1.3.states.TL319.180404.nc + + + u_10 Sa_u + v_10 Sa_v + t_10 Sa_tbot + q_10 Sa_shum + slp Sa_pslv + + null + + bilinear + + u:v + 1 + 1990 + 1990 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc + + + $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_9091.JRA.v1.3.prec.TL319.180404.nc + + + prec Faxa_prec + + null + + bilinear + + u:v + 1 + 1990 + 1990 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + + + 1990 + + + 1990 + + + + + + + RAF_0304.JRA.v1.3.radiation.lwdn.TL319.180404.nc + RAF_0304.JRA.v1.3.radiation.swdn.TL319.180404.nc + RAF_0304.JRA.v1.3.prec.TL319.180404.nc + RAF_0304.JRA.v1.3.states.TL319.180404.nc + + + 2003 + + + 2003 + @@ -2564,6 +2740,37 @@ single + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc + + + $DIN_LOC_ROOT/ocn/jra55/v1.3_noleap/JRA.v1.3.v_10.TL319.%y.171019.nc + + + v_10 Sa_v + + null + + bilinear + + u:v + 1 + 1958 + 2016 + 0 + + linear + + + cycle + + + 1.5 + + single + + From a07a07848dca3c8ac433977e2ebcbc7cb002a7c0 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Sat, 16 Apr 2022 17:15:20 -0600 Subject: [PATCH 03/25] fixes for getting streams with vector fields to work correctly --- cime_config/stream_cdeps.py | 2 +- datm/cime_config/stream_definition_datm.xml | 414 ++++++++++++++------ datm/cime_config/user_nl_datm_streams | 6 +- streams/dshr_strdata_mod.F90 | 89 +++-- 4 files changed, 359 insertions(+), 152 deletions(-) diff --git a/cime_config/stream_cdeps.py b/cime_config/stream_cdeps.py index 1c05645ea..c989532e0 100644 --- a/cime_config/stream_cdeps.py +++ b/cime_config/stream_cdeps.py @@ -100,7 +100,7 @@ def create_stream_xml(self, stream_names, case, streams_xml_file, data_list_file for line in lines_input_new: # read in a single line in user_nl_xxx_streams and parse it if it is not a comment - stream_mods = [x.strip() for x in line.strip().split(":") if x] + stream_mods = [x.strip() for x in line.strip().split(":",maxsplit=1) if x] expect(len(stream_mods) == 2, "input stream mod can only be of the form streamname:var=value(s)") stream,varmod = stream_mods diff --git a/datm/cime_config/stream_definition_datm.xml b/datm/cime_config/stream_definition_datm.xml index 1f35fd578..de7974ede 100644 --- a/datm/cime_config/stream_definition_datm.xml +++ b/datm/cime_config/stream_definition_datm.xml @@ -1294,7 +1294,7 @@ bilinear - u:v + null 1 1 1 @@ -1325,7 +1325,7 @@ bilinear - u:v + null 1 1 1 @@ -1361,7 +1361,7 @@ bilinear - u:v + Sa_u:Sa_v 1 1 1 @@ -1396,7 +1396,7 @@ bilinear - u:v + null 1 2010 2011 @@ -1427,7 +1427,7 @@ bilinear - u:v + null 1 2010 2011 @@ -1458,7 +1458,7 @@ bilinear - u:v + null 1 2010 2011 @@ -1489,7 +1489,7 @@ bilinear - u:v + null 1 2010 2011 @@ -1520,7 +1520,7 @@ bilinear - u:v + null 1 2010 2011 @@ -1551,7 +1551,7 @@ bilinear - u:v + null 1 2010 2011 @@ -1582,7 +1582,7 @@ bilinear - u:v + null 1 2010 2011 @@ -1613,7 +1613,7 @@ bilinear - u:v + null 1 2010 2011 @@ -1644,7 +1644,7 @@ bilinear - u:v + null 1 2010 2011 @@ -1675,7 +1675,7 @@ bilinear - u:v + null 1 2010 2011 @@ -1707,7 +1707,7 @@ bilinear - u:v + null 1 1948 2009 @@ -1739,7 +1739,7 @@ bilinear - u:v + null 1 1948 2009 @@ -1771,7 +1771,7 @@ bilinear - u:v + null 1 1948 2009 @@ -1803,7 +1803,7 @@ bilinear - u:v + null 1 1948 2009 @@ -1837,7 +1837,7 @@ bilinear - u:v + null 1 1948 2009 @@ -1871,7 +1871,7 @@ bilinear - u:v + null 1 1948 2009 @@ -1905,7 +1905,7 @@ bilinear - u:v + null 1 1948 2009 @@ -1939,7 +1939,7 @@ bilinear - u:v + null 1 1948 2009 @@ -1973,7 +1973,7 @@ bilinear - u:v + null 1 1948 2009 @@ -2007,7 +2007,7 @@ bilinear - u:v + null 1 1948 2009 @@ -2038,7 +2038,7 @@ bilinear - u:v + null 1 1948 2009 @@ -2081,7 +2081,7 @@ bilinear - u:v + null 1 1958 2018 @@ -2112,7 +2112,7 @@ bilinear - u:v + null 1 1958 2018 @@ -2143,7 +2143,7 @@ bilinear - u:v + null 1 1958 2018 @@ -2174,7 +2174,7 @@ bilinear - u:v + null 1 1958 2018 @@ -2205,7 +2205,7 @@ bilinear - u:v + null 1 1958 2018 @@ -2236,7 +2236,7 @@ bilinear - u:v + null 1 1958 2018 @@ -2267,7 +2267,7 @@ bilinear - u:v + null 1 1958 2018 @@ -2298,7 +2298,7 @@ bilinear - u:v + null 1 1958 2018 @@ -2319,17 +2319,133 @@ - - RAF_8485.JRA.v1.3.radiation.lwdn.TL319.180404.nc - RAF_8485.JRA.v1.3.radiation.swdn.TL319.180404.nc - RAF_8485.JRA.v1.3.prec.TL319.180404.nc - RAF_8485.JRA.v1.3.states.TL319.180404.nc + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc + + + $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_8485.JRA.v1.3.radiation.lwdn.TL319.180404.nc + + + lwdn Faxa_lwdn + + null + + bilinear + + null + 1 + 1984 + 1984 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc + + + $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_8485.JRA.v1.3.radiation.swdn.TL319.180404.nc + + + swdn Faxa_swdn + + null + + bilinear + + null + 1 + 1984 + 1984 + 0 + + linear + + + cycle + + + 1.5 + + single + - - 1984 + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc + + + $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_8485.JRA.v1.3.prec.TL319.180404.nc + + + prec Faxa_prec + + null + + bilinear + + null + 1 + 1984 + 1984 + 0 + + linear + + + cycle + + + 1.5 + + single + - - 1984 + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc + + + $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_8485.JRA.v1.3.states.TL319.180404.nc + + + u_10 Sa_u + v_10 Sa_v + t_10 Sa_tbot + q_10 Sa_shum + slp Sa_pslv + + null + + bilinear + + Sa_u:Sa_v + 1 + 1984 + 1984 + 0 + + linear + + + cycle + + + 1.5 + + single + @@ -2349,7 +2465,7 @@ bilinear - u:v + null 1 1990 1990 @@ -2380,7 +2496,38 @@ bilinear - u:v + null + 1 + 1990 + 1990 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc + + + $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_9091.JRA.v1.3.prec.TL319.180404.nc + + + prec Faxa_prec + + null + + bilinear + + null 1 1990 1990 @@ -2415,7 +2562,7 @@ bilinear - u:v + Sa_u:Sa_v 1 1990 1990 @@ -2432,24 +2579,28 @@ single - + + + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc - $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_9091.JRA.v1.3.prec.TL319.180404.nc + $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_0304.JRA.v1.3.radiation.lwdn.TL319.180404.nc - prec Faxa_prec + lwdn Faxa_lwdn null bilinear - u:v + null 1 - 1990 - 1990 + 2003 + 2003 0 linear @@ -2463,30 +2614,102 @@ single + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc + + + $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_0304.JRA.v1.3.radiation.swdn.TL319.180404.nc + + + swdn Faxa_swdn + + null + + bilinear + + null + 1 + 2003 + 2003 + 0 + + linear + + + cycle + + + 1.5 + + single + - - - - 1990 - - - 1990 - - - - - - - RAF_0304.JRA.v1.3.radiation.lwdn.TL319.180404.nc - RAF_0304.JRA.v1.3.radiation.swdn.TL319.180404.nc - RAF_0304.JRA.v1.3.prec.TL319.180404.nc - RAF_0304.JRA.v1.3.states.TL319.180404.nc - - - 2003 + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc + + + $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_0304.JRA.v1.3.prec.TL319.180404.nc + + + prec Faxa_prec + + null + + bilinear + + null + 1 + 2003 + 2003 + 0 + + linear + + + cycle + + + 1.5 + + single + - - 2003 + + + $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc + + + $DIN_LOC_ROOT/ocn/jra55/v1.3_ryf/RAF_0304.JRA.v1.3.states.TL319.180404.nc + + + u_10 Sa_u + v_10 Sa_v + t_10 Sa_tbot + q_10 Sa_shum + slp Sa_pslv + + null + + bilinear + + Sa_u:Sa_v + 1 + 2003 + 2003 + 0 + + linear + + + cycle + + + 1.5 + + single + @@ -2506,7 +2729,7 @@ bilinear - u:v + null 1 1958 2016 @@ -2537,7 +2760,7 @@ bilinear - u:v + null 1 1958 2016 @@ -2568,7 +2791,7 @@ bilinear - u:v + null 1 1958 2016 @@ -2599,7 +2822,7 @@ bilinear - u:v + null 1 1958 2016 @@ -2630,7 +2853,7 @@ bilinear - u:v + null 1 1958 2016 @@ -2661,7 +2884,7 @@ bilinear - u:v + null 1 1958 2016 @@ -2692,7 +2915,7 @@ bilinear - u:v + null 1 1958 2016 @@ -2723,38 +2946,7 @@ bilinear - u:v - 1 - 1958 - 2016 - 0 - - linear - - - cycle - - - 1.5 - - single - - - - - $DIN_LOC_ROOT/share/meshes/TL319_151007_ESMFmesh.nc - - - $DIN_LOC_ROOT/ocn/jra55/v1.3_noleap/JRA.v1.3.v_10.TL319.%y.171019.nc - - - v_10 Sa_v - - null - - bilinear - - u:v + null 1 1958 2016 diff --git a/datm/cime_config/user_nl_datm_streams b/datm/cime_config/user_nl_datm_streams index 856ee8944..b01a4fe80 100644 --- a/datm/cime_config/user_nl_datm_streams +++ b/datm/cime_config/user_nl_datm_streams @@ -1,8 +1,8 @@ !------------------------------------------------------------------------ ! This file is used to modify datm.streams.xml generated in $RUNDIR ! Entries should have the form -! :<= new stream_value> -! The following are accepted values for an assume streamname of foo +! := (NO Quotes!!!) +! The following are accepted values for a stream named foo ! foo:meshfile = character string ! foo:datafiles = comma separated string of full pathnames (e.g. file1,file2,file3...) ! foo:datavars = comma separated string of field pairs (e.g. foo foobar,foo2 foobar2...) @@ -14,7 +14,7 @@ ! foo:year_first = integer ! foo:year_last = integer ! foo:year_align = integer -! foo:vectors = one of [none,u:v] +! foo:vectors = null or the names of the vector fields in the model (i.e. Sa_u:Sa_v) ! foo:lev_dimname: = one of [null,name of level dimenion name] ! foo:offset = integer ! As an example: diff --git a/streams/dshr_strdata_mod.F90 b/streams/dshr_strdata_mod.F90 index ce605c39c..187a0453e 100644 --- a/streams/dshr_strdata_mod.F90 +++ b/streams/dshr_strdata_mod.F90 @@ -17,7 +17,7 @@ module dshr_strdata_mod use ESMF , only : ESMF_REGRIDMETHOD_CONSERVE, ESMF_NORMTYPE_FRACAREA, ESMF_NORMTYPE_DSTAREA use ESMF , only : ESMF_ClockGet, operator(-), operator(==), ESMF_CALKIND_NOLEAP use ESMF , only : ESMF_FieldReGridStore, ESMF_FieldRedistStore, ESMF_UNMAPPEDACTION_IGNORE - use ESMF , only : ESMF_TERMORDER_SRCSEQ, ESMF_FieldRegrid, ESMF_FieldFill + use ESMF , only : ESMF_TERMORDER_SRCSEQ, ESMF_FieldRegrid, ESMF_FieldFill, ESMF_FieldIsCreated use ESMF , only : ESMF_REGION_TOTAL, ESMF_FieldGet, ESMF_TraceRegionExit, ESMF_TraceRegionEnter use ESMF , only : ESMF_LOGMSG_INFO, ESMF_LogWrite, ESMF_RC_ARG_VALUE use shr_kind_mod , only : r8=>shr_kind_r8, r4=>shr_kind_r4, i2=>shr_kind_I2 @@ -97,11 +97,9 @@ module dshr_strdata_mod integer :: stream_lb ! index of the Lowerbound (LB) in fldlist_stream integer :: stream_ub ! index of the Upperbound (UB) in fldlist_stream type(ESMF_Field) :: field_stream ! a field on the stream data domain - type(ESMF_Field) :: stream_vector ! a vector field on the stream data domain + type(ESMF_Field) :: field_stream_vector ! a vector field on the stream data domain type(ESMF_FieldBundle), allocatable :: fldbun_data(:) ! stream field bundle interpolated to model grid spatially type(ESMF_FieldBundle) :: fldbun_model ! stream n field bundle interpolated to model grid and time - integer :: ucomp = -1 ! index of vector u in stream - integer :: vcomp = -1 ! index of vector v in stream integer :: ymdLB = -1 ! stream ymd lower bound integer :: todLB = -1 ! stream tod lower bound integer :: ymdUB = -1 ! stream ymd upper bound @@ -114,7 +112,6 @@ module dshr_strdata_mod type shr_strdata_type type(shr_strdata_perstream), allocatable :: pstrm(:) ! stream info type(shr_stream_streamType), pointer :: stream(:)=> null() ! stream datatype - integer :: nvectors ! number of vectors logical :: mainproc integer :: logunit ! stdout unit integer :: io_type ! pio info @@ -398,7 +395,7 @@ subroutine shr_strdata_init(sdat, model_clock, stream_name, rc) integer :: nvars integer :: i, stream_nlev, index integer, allocatable :: mask(:) - character(CL) :: stream_vectors + character(CL) :: stream_vector_names character(len=*), parameter :: subname='(shr_sdat_init)' ! ---------------------------------------------- @@ -450,15 +447,19 @@ subroutine shr_strdata_init(sdat, model_clock, stream_name, rc) call shr_stream_getStreamFieldList(sdat%stream(ns), sdat%pstrm(ns)%fldlist_stream) ! Create field bundles on model mesh - if(sdat%stream(ns)%readmode=='single') then + if (sdat%stream(ns)%readmode=='single') then sdat%pstrm(ns)%stream_lb = 1 sdat%pstrm(ns)%stream_ub = 2 allocate(sdat%pstrm(ns)%fldbun_data(2)) + if (mainproc) then + write(sdat%logunit,'(a,i8)') trim(subname)//" Creating field bundle array fldbun_data of size 2 for stream ",& + ns + end if else if(sdat%stream(ns)%readmode=='full_file') then ! TODO: add this in endif - ! create spatially interpolated (but not time interpolated) field bundle - fldbun_data array + ! Create spatially interpolated (but not time interpolated) field bundle - fldbun_data array do i=1,size(sdat%pstrm(ns)%fldbun_data) sdat%pstrm(ns)%fldbun_data(i) = ESMF_FieldBundleCreate(rc=rc) ! stream mesh enddo @@ -476,6 +477,12 @@ subroutine shr_strdata_init(sdat, model_clock, stream_name, rc) end if call ESMF_FieldBundleAdd(sdat%pstrm(ns)%fldbun_data(i), (/lfield/), rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return + if (mainproc) then + if (i == 1) then + write(sdat%logunit,'(a,i8)') " adding field "//trim(sdat%pstrm(ns)%fldlist_model(nfld))//& + " to fldbun_data for stream ",ns + end if + end if enddo end do @@ -596,30 +603,34 @@ subroutine shr_strdata_init(sdat, model_clock, stream_name, rc) do ns = 1,shr_strdata_get_stream_count(sdat) stream_mesh => sdat%pstrm(ns)%stream_mesh stream_nlev = sdat%pstrm(ns)%stream_nlev - stream_vectors = trim(sdat%stream(ns)%stream_vectors) + stream_vector_names = trim(sdat%stream(ns)%stream_vectors) ! check that vector field list is a valid colon delimited string - if (trim(stream_vectors) /= 'null') then - ! check that for now u and v are only for single leve fields + if (trim(stream_vector_names) /= 'null') then + ! check that for now u and v are only for single level fields if (stream_nlev > 1) then ! TODO: add support for u and v for multi level fields call shr_sys_abort(subname//': vector fields are not currently supported for multi-level fields') end if ! check that stream vector names are valid - if (.not. shr_string_listIsValid(stream_vectors)) then - write(sdat%logunit,*) trim(subname),' vec fldlist invalid m=',m,trim(stream_vectors) - call shr_sys_abort(subname//': vec fldlist invalid:'//trim(stream_vectors)) + if (.not. shr_string_listIsValid(stream_vector_names)) then + write(sdat%logunit,*) trim(subname),' vec fldlist invalid m=',m,trim(stream_vector_names) + call shr_sys_abort(subname//': vec fldlist invalid:'//trim(stream_vector_names)) endif ! check that only 2 fields are contained for any vector pairing - if (shr_string_listGetNum(stream_vectors) /= 2) then - write(sdat%logunit,*) trim(subname),' vec fldlist ne 2 m=',m,trim(stream_vectors) - call shr_sys_abort(subname//': vec fldlist ne 2:'//trim(stream_vectors)) + if (shr_string_listGetNum(stream_vector_names) /= 2) then + write(sdat%logunit,*) trim(subname),' vec fldlist ne 2 m=',m,trim(stream_vector_names) + call shr_sys_abort(subname//': vec fldlist ne 2:'//trim(stream_vector_names)) endif ! create stream vector field - sdat%pstrm(ns)%stream_vector = ESMF_FieldCreate(stream_mesh, & + sdat%pstrm(ns)%field_stream_vector = ESMF_FieldCreate(stream_mesh, & ESMF_TYPEKIND_r8, name='stream_vector', meshloc=ESMF_MESHLOC_ELEMENT, & ungriddedLbound=(/1/), ungriddedUbound=(/2/), gridToFieldMap=(/2/), rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return + if (mainproc) then + write(sdat%logunit,'(a,i8)') "creating ESMF stream vector field with names" //& + trim(stream_vector_names)//" for stream ",ns + end if end if enddo @@ -1168,6 +1179,7 @@ subroutine shr_strdata_print(sdat, name) character(*),parameter :: F01 = "('(shr_strdata_print) ',a,i6,a)" character(*),parameter :: F02 = "('(shr_strdata_print) ',a,es13.6)" character(*),parameter :: F04 = "('(shr_strdata_print) ',a,i2,a,a)" + character(*),parameter :: F05 = "('(shr_strdata_print) ',a)" character(*),parameter :: F07 = "('(shr_strdata_print) ',a,i2,a,es13.6)" character(*),parameter :: F90 = "('(shr_strdata_print) ',58('-'))" !------------------------------------------------------------------------------- @@ -1181,9 +1193,8 @@ subroutine shr_strdata_print(sdat, name) write(sdat%logunit,F02) "lambm0 = ",sdat%lambm0 write(sdat%logunit,F02) "obliqr = ",sdat%obliqr write(sdat%logunit,F01) "pio_iotype = ",sdat%io_type - write(sdat%logunit,F01) "nstreams = ",shr_strdata_get_stream_count(sdat) - write(sdat%logunit,F01) "nvectors = ",sdat%nvectors + write(sdat%logunit,F05) "Per stream information " do ns = 1, shr_strdata_get_stream_count(sdat) write(sdat%logunit,F04) " taxMode (",ns,") = ",trim(sdat%stream(ns)%taxmode) write(sdat%logunit,F07) " dtlimit (",ns,") = ",sdat%stream(ns)%dtlimit @@ -1331,7 +1342,7 @@ subroutine shr_strdata_readstrm(sdat, per_stream, stream, fldbun_data, & ! local variables integer :: stream_nlev - type(ESMF_Field) :: field_dst, vector_dst + type(ESMF_Field) :: field_dst, field_vector_dst character(CL) :: currfile logical :: fileexists logical :: fileopen @@ -1343,17 +1354,17 @@ subroutine shr_strdata_readstrm(sdat, per_stream, stream, fldbun_data, & real(r8) :: fillvalue_r8 logical :: handlefill = .false. integer :: old_error_handle - real(r8), pointer :: dataptr(:) => null() - real(r8), pointer :: dataptr1d(:) => null() ! field bundle data - real(r8), pointer :: dataptr2d(:,:) => null() ! field bundle data - real(r8), pointer :: dataptr2d_src(:,:) => null() ! field bundle data - real(r8), pointer :: dataptr2d_dst(:,:) => null() ! field bundle data - real(r4), allocatable :: data_real1d(:) ! stream input data - real(r4), allocatable :: data_real2d(:,:) ! stream input data - real(r8), allocatable :: data_dbl1d(:) ! stream input data - real(r8), allocatable :: data_dbl2d(:,:) ! stream input data - integer(i2), allocatable :: data_short1d(:) ! stream input data - integer(i2), allocatable :: data_short2d(:,:) ! stream input data + real(r8), pointer :: dataptr(:) + real(r8), pointer :: dataptr1d(:) ! field bundle data + real(r8), pointer :: dataptr2d(:,:) ! field bundle data + real(r8), pointer :: dataptr2d_src(:,:) ! field bundle data + real(r8), pointer :: dataptr2d_dst(:,:) ! field bundle data + real(r4), allocatable :: data_real1d(:) ! stream input data + real(r4), allocatable :: data_real2d(:,:) ! stream input data + real(r8), allocatable :: data_dbl1d(:) ! stream input data + real(r8), allocatable :: data_dbl2d(:,:) ! stream input data + integer(i2), allocatable :: data_short1d(:) ! stream input data + integer(i2), allocatable :: data_short2d(:,:) ! stream input data integer :: lsize, n integer :: spatialDim, numOwnedElements integer :: pio_iovartype @@ -1441,10 +1452,10 @@ subroutine shr_strdata_readstrm(sdat, per_stream, stream, fldbun_data, & write(sdat%logunit,F02) 'reading file ' // trim(boundstr) //': ',trim(filename), nt endif - if(per_stream%ucomp > 0 .and. per_stream%vcomp > 0) then + if (ESMF_FieldIsCreated(per_stream%field_stream_vector)) then call shr_string_listGetName(stream%stream_vectors,1,uname) call shr_string_listGetName(stream%stream_vectors,2,vname) - call dshr_field_getfldptr(per_stream%stream_vector, fldptr2=dataptr2d_src, rc=rc) + call dshr_field_getfldptr(per_stream%field_stream_vector, fldptr2=dataptr2d_src, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return endif @@ -1744,15 +1755,19 @@ subroutine shr_strdata_readstrm(sdat, per_stream, stream, fldbun_data, & dataptr2d_src(1,i) = (coslon * dataptr(i) - sinlon * dataptr2d_src(2,i)) dataptr2d_src(2,i) = (sinlon * dataptr(i) + coslon * dataptr2d_src(2,i)) enddo - vector_dst = ESMF_FieldCreate(sdat%model_mesh, ESMF_TYPEKIND_r8, name='vector_dst', & + field_vector_dst = ESMF_FieldCreate(sdat%model_mesh, ESMF_TYPEKIND_r8, name='field_vector_dst', & ungriddedLbound=(/1/), ungriddedUbound=(/2/), gridToFieldMap=(/2/), meshloc=ESMF_MESHLOC_ELEMENT, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_FieldRegrid(per_stream%stream_vector, vector_dst, per_stream%routehandle, & + if (.not. ESMF_FieldIsCreated(per_stream%field_stream_vector)) then + call shr_sys_abort('ERROR: per_stream%field_stream_vector has not been created') + end if + + call ESMF_FieldRegrid(per_stream%field_stream_vector, field_vector_dst, per_stream%routehandle, & termorderflag=ESMF_TERMORDER_SRCSEQ, checkflag=checkflag, zeroregion=ESMF_REGION_TOTAL, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_FieldGet(vector_dst, farrayPtr=dataptr2d_dst, rc=rc) + call ESMF_FieldGet(field_vector_dst, farrayPtr=dataptr2d_dst, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return call dshr_fldbun_getFldPtr(fldbun_data, trim(uname), data_u_dst, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return From 4bd6847fcef9b9da8391dbef63b978c4cca64894 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Mon, 18 Apr 2022 21:00:39 -0600 Subject: [PATCH 04/25] fixes for failed tests --- streams/dshr_strdata_mod.F90 | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/streams/dshr_strdata_mod.F90 b/streams/dshr_strdata_mod.F90 index 187a0453e..7b402a94e 100644 --- a/streams/dshr_strdata_mod.F90 +++ b/streams/dshr_strdata_mod.F90 @@ -1386,6 +1386,17 @@ subroutine shr_strdata_readstrm(sdat, per_stream, stream, fldbun_data, & rc = ESMF_SUCCESS + ! nullify local pointers + nullify(dataptr) + nullify(dataptr1d) + nullify(dataptr2d) + nullify(dataptr2d_src) + nullify(dataptr2d_dst) + nullify(nv_coords) + nullify(nu_coords) + nullify(data_u_dst) + nullify(data_v_dst) + ! Set up file to read from if (sdat%mainproc) then inquire(file=trim(fileName),exist=fileExists) @@ -1815,7 +1826,6 @@ subroutine shr_strdata_set_stream_iodesc(sdat, per_stream, fldname, pioid, rc) integer , intent(out) :: rc ! local variables - integer :: stream_nlev integer :: gsize2d integer :: pio_iovartype @@ -1827,8 +1837,8 @@ subroutine shr_strdata_set_stream_iodesc(sdat, per_stream, fldname, pioid, rc) integer, allocatable :: dimlens(:) type(ESMF_DistGrid) :: distGrid integer :: lsize - integer, pointer :: compdof(:) => null() - integer, pointer :: compdof3d(:) => null() + integer, pointer :: compdof(:) + integer, pointer :: compdof3d(:) integer :: rCode ! pio return code (only used when pio error handling is PIO_BCAST_ERROR) character(*), parameter :: subname = '(shr_strdata_set_stream_iodesc) ' character(*), parameter :: F00 = "('(shr_strdata_set_stream_iodesc) ',a,i8,2x,i8,2x,a)" @@ -1838,6 +1848,10 @@ subroutine shr_strdata_set_stream_iodesc(sdat, per_stream, fldname, pioid, rc) rc = ESMF_SUCCESS + ! nullify local pointers + nullify(compdof) + nullify(compdof3d) + ! set the number of vertical levels to a local variable stream_nlev = per_stream%stream_nlev From 992ef155aad5383f855c282487f7ea72feef285e Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Mon, 14 Mar 2022 23:22:20 -0600 Subject: [PATCH 05/25] added ndep stream data --- datm/atm_comp_nuopc.F90 | 27 +- datm/cime_config/buildnml | 7 + datm/cime_config/config_component.xml | 28 +- datm/cime_config/namelist_definition_datm.xml | 13 + datm/cime_config/stream_definition_datm.xml | 302 ++++++++++++++++-- datm/datm_datamode_clmncep_mod.F90 | 10 +- datm/datm_datamode_core2_mod.F90 | 6 +- datm/datm_datamode_cplhist_mod.F90 | 10 +- datm/datm_datamode_jra_mod.F90 | 6 +- 9 files changed, 371 insertions(+), 38 deletions(-) diff --git a/datm/atm_comp_nuopc.F90 b/datm/atm_comp_nuopc.F90 index 3c6586bd1..a8de65f99 100644 --- a/datm/atm_comp_nuopc.F90 +++ b/datm/atm_comp_nuopc.F90 @@ -122,7 +122,8 @@ module cdeps_datm_comp integer :: iradsw = 0 ! radiation interval (input namelist) character(CL) :: factorFn_mesh = 'null' ! file containing correction factors mesh character(CL) :: factorFn_data = 'null' ! file containing correction factors data - logical :: flds_presaero = .false. ! true => send valid prescribe aero fields to mediator + logical :: flds_presaero = .false. ! true => send valid prescribed aero fields to mediator + logical :: flds_presndep = .false. ! true => send valid prescribed ndep fields to mediator logical :: flds_co2 = .false. ! true => send prescribed co2 to mediator logical :: flds_wiso = .false. ! true => send water isotopes to mediator character(CL) :: bias_correct = nullstr ! send bias correction fields to coupler @@ -229,7 +230,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) model_meshfile, model_maskfile, & nx_global, ny_global, restfilm, iradsw, factorFn_data, factorFn_mesh, & flds_presaero, flds_co2, flds_wiso, bias_correct, anomaly_forcing, & - skip_restart_read + skip_restart_read, flds_presndep rc = ESMF_SUCCESS @@ -268,6 +269,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) call shr_mpi_bcast(factorFn_mesh , mpicom, 'factorFn_mesh') call shr_mpi_bcast(restfilm , mpicom, 'restfilm') call shr_mpi_bcast(flds_presaero , mpicom, 'flds_presaero') + call shr_mpi_bcast(flds_presndep , mpicom, 'flds_presndep') call shr_mpi_bcast(flds_co2 , mpicom, 'flds_co2') call shr_mpi_bcast(flds_wiso , mpicom, 'flds_wiso') call shr_mpi_bcast(skip_restart_read , mpicom, 'skip_restart_read') @@ -285,6 +287,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) write(logunit,F00)' factorFn_data = ',trim(factorFn_data) write(logunit,F00)' factorFn_mesh = ',trim(factorFn_mesh) write(logunit,F02)' flds_presaero = ',flds_presaero + write(logunit,F02)' flds_presndep = ',flds_presndep write(logunit,F02)' flds_co2 = ',flds_co2 write(logunit,F02)' flds_wiso = ',flds_wiso write(logunit,F02)' skip_restart_read = ',skip_restart_read @@ -308,19 +311,19 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) select case (trim(datamode)) case ('CORE2_NYF', 'CORE2_IAF') call datm_datamode_core2_advertise(exportState, fldsExport, flds_scalar_name, & - flds_co2, flds_wiso, flds_presaero, rc) + flds_co2, flds_wiso, flds_presaero, flds_presndep, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return case ('CORE_IAF_JRA') call datm_datamode_jra_advertise(exportState, fldsExport, flds_scalar_name, & - flds_co2, flds_wiso, flds_presaero, rc) + flds_co2, flds_wiso, flds_presaero, flds_presndep, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return case ('CLMNCEP') call datm_datamode_clmncep_advertise(exportState, fldsExport, flds_scalar_name, & - flds_co2, flds_wiso, flds_presaero, rc) + flds_co2, flds_wiso, flds_presaero, flds_presndep, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return case ('CPLHIST') call datm_datamode_cplhist_advertise(exportState, fldsExport, flds_scalar_name, & - flds_co2, flds_wiso, flds_presaero, rc) + flds_co2, flds_wiso, flds_presaero, flds_presndep, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return case ('ERA5') call datm_datamode_era5_advertise(exportState, fldsExport, flds_scalar_name, rc) @@ -491,7 +494,7 @@ subroutine ModelAdvance(gcomp, rc) restart_write = dshr_check_restart_alarm(clock, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - + ! Run datm call ESMF_TraceRegionEnter('datm_run') call datm_comp_run(importstate, exportstate, next_ymd, next_tod, mon, & @@ -705,6 +708,7 @@ subroutine datm_init_dfields(rc) ! local variables integer :: n + character(CS) :: strm_flds2(2) character(CS) :: strm_flds3(3) character(CS) :: strm_flds4(4) integer :: rank @@ -731,6 +735,10 @@ subroutine datm_init_dfields(rc) exportState, logunit, mainproc, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return else if (rank == 2) then + ! The following maps stream input fields to export fields that have an ungridded dimension + ! TODO: in the future it might be better to change the format of the streams file to have two more entries + ! that could denote how the stream variables are mapped to export fields that have an ungridded dimension + select case (trim(lfieldnames(n))) case('Faxa_bcph') strm_flds3 = (/'Faxa_bcphidry', 'Faxa_bcphodry', 'Faxa_bcphiwet'/) @@ -764,6 +772,11 @@ subroutine datm_init_dfields(rc) strm_flds3 = (/'Faxa_snowl_16O', 'Faxa_snowl_18O', 'Faxa_snowl_HDO'/) call dshr_dfield_add(dfields, sdat, trim(lfieldnames(n)), strm_flds3, exportState, logunit, mainproc, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return + case('Faxa_ndep') + strm_flds2 = (/'Faxa_ndep_nhx', 'Faxa_ndep_noy'/) + call dshr_dfield_add(dfields, sdat, trim(lfieldnames(n)), strm_flds2, exportState, logunit, masterproc, rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + end select end if end do diff --git a/datm/cime_config/buildnml b/datm/cime_config/buildnml index 671fa7584..0a0f41ec5 100755 --- a/datm/cime_config/buildnml +++ b/datm/cime_config/buildnml @@ -104,6 +104,7 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path datm_mode = case.get_value("DATM_MODE") datm_topo = case.get_value("DATM_TOPO") datm_presaero = case.get_value("DATM_PRESAERO") + datm_presndep = case.get_value("DATM_PRESNDEP") datm_co2_tseries = case.get_value("DATM_CO2_TSERIES") atm_grid = case.get_value("ATM_GRID") model_grid = case.get_value("GRID") @@ -113,6 +114,8 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path if "CLM" in datm_mode and comp_lnd == "clm": expect(datm_presaero != "none", "A DATM_MODE for CLM is incompatible with DATM_PRESAERO=none.") + expect(datm_presndep != "none", + "A DATM_MODE for CLM is incompatible with DATM_PRESNDEP=none.") expect(datm_topo != "none", "A DATM_MODE for CLM is incompatible with DATM_TOPO=none.") @@ -120,6 +123,7 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path logger.debug("DATM mode is {}".format(datm_mode)) logger.debug("DATM grid is {}".format(atm_grid)) logger.debug("DATM presaero mode is {}".format(datm_presaero)) + logger.debug("DATM presndep mode is {}".format(datm_presndep)) logger.debug("DATM topo mode is {}".format(datm_topo)) # Initialize namelist defaults @@ -138,6 +142,7 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path config['datm_mode'] = datm_mode config['datm_co2_tseries'] = datm_co2_tseries config['datm_presaero'] = datm_presaero + config['datm_presndep'] = datm_presndep if case.get_value('PTS_LON'): scol_lon = float(case.get_value('PTS_LON')) @@ -166,6 +171,8 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path if datm_presaero != "none": streamlist.append("presaero.{}".format(datm_presaero)) + if datm_presndep != "none": + streamlist.append("presndep.{}".format(datm_presndep)) if datm_topo != "none": streamlist.append("topo.{}".format(datm_topo)) if datm_co2_tseries != "none": diff --git a/datm/cime_config/config_component.xml b/datm/cime_config/config_component.xml index a06eacfd8..652f98d7e 100644 --- a/datm/cime_config/config_component.xml +++ b/datm/cime_config/config_component.xml @@ -63,7 +63,7 @@ char - none,clim_1850,clim_2000,clim_2010,trans_1850-2000,SSP1-1.9,SSP1-2.6,SSP2-4.5,SSP3-7.0,SSP4-3.4,SSP4-6.0,SSP5-3.4,SSP5-8.5,cplhist + none,clim_1850,clim_2000,clim_2010,hist,SSP1-1.9,SSP1-2.6,SSP2-4.5,SSP3-7.0,SSP4-3.4,SSP4-6.0,SSP5-3.4,SSP5-8.5,cplhist clim_2000 clim_1850 @@ -77,8 +77,8 @@ SSP4-6.0 SSP5-3.4 SSP5-8.5 - trans_1850-2000 - trans_1850-2000 + hist + hist cplhist none @@ -87,6 +87,28 @@ DATM prescribed aerosol forcing + + char + none,clim_1850,clim_2000,clim_2010,hist,SSP1-2.6,SSP2-4.5,SSP3-7.0,SSP5-3.4,SSP5-8.5 + clim_2000 + + clim_1850 + clim_2000 + clim_2010 + SSP1-2.6 + SSP2-4.5 + SSP3-7.0 + SSP5-8.5 + hist + hist + cplhist + none + + run_component_datm + env_run.xml + DATM prescribed nitrogen deposition forcing + + char none,observed,cplhist diff --git a/datm/cime_config/namelist_definition_datm.xml b/datm/cime_config/namelist_definition_datm.xml index 32984f6e5..53983cf14 100644 --- a/datm/cime_config/namelist_definition_datm.xml +++ b/datm/cime_config/namelist_definition_datm.xml @@ -257,6 +257,19 @@ + + logical + datm + datm_nml + + If true, prescribed nitrogen deposition fluxes are sent from datm (must be true for running with CLM). + + + .true. + .false. + + + logical datm diff --git a/datm/cime_config/stream_definition_datm.xml b/datm/cime_config/stream_definition_datm.xml index af7928349..26e42730c 100644 --- a/datm/cime_config/stream_definition_datm.xml +++ b/datm/cime_config/stream_definition_datm.xml @@ -23,8 +23,8 @@ any entry that has %y, %ym or %ymd MUST have first_year and last_year syntax ****** - Each mode below, except for presaero, has a set of streams associated with it - The presaero stream, is associated with all modes + Each mode below, except for presaero and presndep, has a set of streams associated with it + The presaero and presndep streams are associated with all modes Currently the following data modes are supported: CLM_QIAN = Run with the CLM Qian dataset valid from 1948 to 2004 (force CLM) @@ -42,6 +42,7 @@ Currently the following optional streams are supported presaero = Prescribed aerosol forcing + presndep = Prescribed nitrogen deposition forcing topo = Surface topography co2tseries = Time series of prescribed CO2 forcing Anomaly.Forcing = Time series of correction terms @@ -157,7 +158,7 @@ presaero.clim_1850 presaero.clim_2000 presaero.clim_2010 - presaero.trans_1850-2000 + presaero.hist presaero.SSP1-1.9 presaero.SSP1-2.6 presaero.SSP2-4.5 @@ -168,6 +169,20 @@ presaero.SSP5-8.5 presaero.cplhist + ======================== + optional stream nitrogen deposition + - DATM_NDEP is set by the 4 character time prefix in config_component.xml + ======================== + presndep.clim_1850 + presndep.clim_2000 + presndep.clim_2010 + presndep.hist + presndep.SSP1-2.6 + presndep.SSP2-4.5 + presndep.SSP3-7.0 + presndep.SSP5-8.5 + presndep.cplhist + ======================== optional stream topo (turned on and stream specified by xml variable DATM_TOPO) ======================== @@ -3364,7 +3379,7 @@ single - + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc @@ -3584,28 +3599,244 @@ single - + + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - $DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero/aerodep_clm_SSP585_b.e21.BSSP585cmip6.f09_g17.CMIP6-SSP5-8.5.001_2014-2101_monthly_0.9x1.25_c190419.nc + $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_WACCM6_CMIP6piControl001_y21-50avg_1850monthly_0.95x1.25_c180802.nc - BCDEPWET Faxa_bcphiwet - BCPHODRY Faxa_bcphodry - BCPHIDRY Faxa_bcphidry - OCDEPWET Faxa_ocphiwet - OCPHIDRY Faxa_ocphidry - OCPHODRY Faxa_ocphodry - DSTX01WD Faxa_dstwet1 - DSTX01DD Faxa_dstdry1 - DSTX02WD Faxa_dstwet2 - DSTX02DD Faxa_dstdry2 - DSTX03WD Faxa_dstwet3 - DSTX03DD Faxa_dstdry3 - DSTX04WD Faxa_dstwet4 - DSTX04DD Faxa_dstdry4 + NDEP_NHx_month Faxa_ndep_nhx + NDEP_NOy_month Faxa_ndep_noy + + null + + bilinear + + null + 1 + 1850 + 1850 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_hist_b.e21.BWHIST.f09_g17.CMIP6-historical-WACCM.ensmean_1849-2015_monthly_0.9x1.25_c180926.nc + + + NDEP_NHx_month Faxa_ndep_nhx + NDEP_NOy_month Faxa_ndep_noy + + null + + bilinear + + null + 1 + 2000 + 2000 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_hist_b.e21.BWHIST.f09_g17.CMIP6-historical-WACCM.ensmean_1849-2015_monthly_0.9x1.25_c180926.nc + + + NDEP_NHx_month Faxa_ndep_nhx + NDEP_NOy_month Faxa_ndep_noy + + null + + bilinear + + null + 1 + 2010 + 2010 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_hist_b.e21.BWHIST.f09_g17.CMIP6-historical-WACCM.ensmean_1849-2015_monthly_0.9x1.25_c180926.nc + + + NDEP_NHx_month Faxa_ndep_nhx + NDEP_NOy_month Faxa_ndep_noy + + null + + bilinear + + null + 1849 + 1849 + 2014 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_f09_g17.CMIP6-SSP1-2.6-WACCM_1849-2101_monthly_c191007.nc + + + NDEP_NHx_month Faxa_ndep_nhx + NDEP_NOy_month Faxa_ndep_noy + + null + + bilinear + + null + 2015 + 2015 + 2101 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + $DIN_LOC_ROOT/lnd/clm2/ndepdata/lnd/clm2/fndepdata/fndep_clm_f09_g17.CMIP6-SSP2-4.5-WACCM_1849-2101_monthly_c191007.nc + + + NDEP_NHx_month Faxa_ndep_nhx + NDEP_NOy_month Faxa_ndep_noy + + null + + bilinear + + null + 2015 + 2015 + 2101 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_SSP370_b.e21.BWSSP370cmip6.f09_g17.CMIP6-SSP3-7.0-WACCM.002_1849-2101_monthly_0.9x1.25_c211216.nc + + + NDEP_NHx_month Faxa_ndep_nhx + NDEP_NOy_month Faxa_ndep_noy + + null + + bilinear + + null + 2015 + 2015 + 2101 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_f09_g17.CMIP6-SSP5-8.5-WACCM_1849-2101_monthly_c191007.nc + + + NDEP_NHx_month Faxa_ndep_nhx + NDEP_NOy_month Faxa_ndep_noy null @@ -3706,6 +3937,37 @@ single + + + $ATM_DOMAIN_MESH + + + $DATM_CPLHIST_DIR/$DATM_CPLHIST_CASE.cpl.ha2x1d.%ym.nc + + + a2x1d_Faxa_ndep Faxa_ndep + + null + + bilinear + + null + $DATM_YR_ALIGN + $DATM_YR_START + $DATM_YR_END + 0 + + nearest + + + cycle + + + 3.0 + + single + + $ATM_DOMAIN_MESH diff --git a/datm/datm_datamode_clmncep_mod.F90 b/datm/datm_datamode_clmncep_mod.F90 index 26d881cc1..9d126480c 100644 --- a/datm/datm_datamode_clmncep_mod.F90 +++ b/datm/datm_datamode_clmncep_mod.F90 @@ -112,14 +112,15 @@ module datm_datamode_clmncep_mod !=============================================================================== subroutine datm_datamode_clmncep_advertise(exportState, fldsexport, flds_scalar_name, & - flds_co2, flds_wiso, presaero, rc) + flds_co2, flds_wiso, flds_presaero, flds_presndep, rc) ! input/output variables type(esmf_State) , intent(inout) :: exportState type(fldlist_type) , pointer :: fldsexport logical , intent(in) :: flds_co2 logical , intent(in) :: flds_wiso - logical , intent(in) :: presaero + logical , intent(in) :: flds_presaero + logical , intent(in) :: flds_presndep character(len=*) , intent(in) :: flds_scalar_name integer , intent(out) :: rc @@ -155,12 +156,15 @@ subroutine datm_datamode_clmncep_advertise(exportState, fldsexport, flds_scalar_ call dshr_fldList_add(fldsExport, 'Sa_co2prog') call dshr_fldList_add(fldsExport, 'Sa_co2diag') end if - if (presaero) then + if (flds_presaero) then call dshr_fldList_add(fldsExport, 'Faxa_bcph' , ungridded_lbound=1, ungridded_ubound=3) call dshr_fldList_add(fldsExport, 'Faxa_ocph' , ungridded_lbound=1, ungridded_ubound=3) call dshr_fldList_add(fldsExport, 'Faxa_dstwet' , ungridded_lbound=1, ungridded_ubound=4) call dshr_fldList_add(fldsExport, 'Faxa_dstdry' , ungridded_lbound=1, ungridded_ubound=4) end if + if (flds_presndep) then + call dshr_fldList_add(fldsExport, 'Faxa_ndep', ungridded_lbound=1, ungridded_ubound=2) + end if if (flds_wiso) then call dshr_fldList_add(fldsExport, 'Faxa_rainc_wiso', ungridded_lbound=1, ungridded_ubound=3) call dshr_fldList_add(fldsExport, 'Faxa_rainl_wiso', ungridded_lbound=1, ungridded_ubound=3) diff --git a/datm/datm_datamode_core2_mod.F90 b/datm/datm_datamode_core2_mod.F90 index 4bdfa58fd..9c1e60f43 100644 --- a/datm/datm_datamode_core2_mod.F90 +++ b/datm/datm_datamode_core2_mod.F90 @@ -91,7 +91,7 @@ module datm_datamode_core2_mod !=============================================================================== subroutine datm_datamode_core2_advertise(exportState, fldsexport, flds_scalar_name, & - flds_co2, flds_wiso, flds_presaero, rc) + flds_co2, flds_wiso, flds_presaero, flds_presndep, rc) ! input/output variables type(esmf_State) , intent(inout) :: exportState @@ -100,6 +100,7 @@ subroutine datm_datamode_core2_advertise(exportState, fldsexport, flds_scalar_na logical , intent(in) :: flds_co2 logical , intent(in) :: flds_wiso logical , intent(in) :: flds_presaero + logical , intent(in) :: flds_presndep integer , intent(out) :: rc ! local variables @@ -140,6 +141,9 @@ subroutine datm_datamode_core2_advertise(exportState, fldsexport, flds_scalar_na call dshr_fldList_add(fldsExport, 'Faxa_dstwet' , ungridded_lbound=1, ungridded_ubound=4) call dshr_fldList_add(fldsExport, 'Faxa_dstdry' , ungridded_lbound=1, ungridded_ubound=4) end if + if (flds_presndep) then + call dshr_fldList_add(fldsExport, 'Faxa_ndep', ungridded_lbound=1, ungridded_ubound=2) + end if if (flds_wiso) then call dshr_fldList_add(fldsExport, 'Faxa_rainc_wiso', ungridded_lbound=1, ungridded_ubound=3) call dshr_fldList_add(fldsExport, 'Faxa_rainl_wiso', ungridded_lbound=1, ungridded_ubound=3) diff --git a/datm/datm_datamode_cplhist_mod.F90 b/datm/datm_datamode_cplhist_mod.F90 index 1c085375b..7f0850402 100644 --- a/datm/datm_datamode_cplhist_mod.F90 +++ b/datm/datm_datamode_cplhist_mod.F90 @@ -52,14 +52,15 @@ module datm_datamode_cplhist_mod !=============================================================================== subroutine datm_datamode_cplhist_advertise(exportState, fldsexport, flds_scalar_name, & - flds_co2, flds_wiso, presaero, rc) + flds_co2, flds_wiso, flds_presaero, flds_presndep, rc) ! input/output variables type(esmf_State) , intent(inout) :: exportState type(fldlist_type) , pointer :: fldsexport logical , intent(in) :: flds_co2 logical , intent(in) :: flds_wiso - logical , intent(in) :: presaero + logical , intent(in) :: flds_presaero + logical , intent(in) :: flds_presndep character(len=*) , intent(in) :: flds_scalar_name integer , intent(out) :: rc @@ -95,12 +96,15 @@ subroutine datm_datamode_cplhist_advertise(exportState, fldsexport, flds_scalar_ call dshr_fldList_add(fldsExport, 'Sa_co2prog') call dshr_fldList_add(fldsExport, 'Sa_co2diag') end if - if (presaero) then + if (flds_presaero) then call dshr_fldList_add(fldsExport, 'Faxa_bcph' , ungridded_lbound=1, ungridded_ubound=3) call dshr_fldList_add(fldsExport, 'Faxa_ocph' , ungridded_lbound=1, ungridded_ubound=3) call dshr_fldList_add(fldsExport, 'Faxa_dstwet' , ungridded_lbound=1, ungridded_ubound=4) call dshr_fldList_add(fldsExport, 'Faxa_dstdry' , ungridded_lbound=1, ungridded_ubound=4) end if + if (flds_presndep) then + call dshr_fldList_add(fldsExport, 'Faxa_ndep', ungridded_lbound=1, ungridded_ubound=2) + end if if (flds_wiso) then call dshr_fldList_add(fldsExport, 'Faxa_rainc_wiso', ungridded_lbound=1, ungridded_ubound=3) call dshr_fldList_add(fldsExport, 'Faxa_rainl_wiso', ungridded_lbound=1, ungridded_ubound=3) diff --git a/datm/datm_datamode_jra_mod.F90 b/datm/datm_datamode_jra_mod.F90 index b7055e07c..2a2bc65c4 100644 --- a/datm/datm_datamode_jra_mod.F90 +++ b/datm/datm_datamode_jra_mod.F90 @@ -64,7 +64,7 @@ module datm_datamode_jra_mod !=============================================================================== subroutine datm_datamode_jra_advertise(exportState, fldsexport, flds_scalar_name, & - flds_co2, flds_wiso, flds_presaero, rc) + flds_co2, flds_wiso, flds_presaero, flds_presndep, rc) ! input/output variables type(esmf_State) , intent(inout) :: exportState @@ -73,6 +73,7 @@ subroutine datm_datamode_jra_advertise(exportState, fldsexport, flds_scalar_name logical , intent(in) :: flds_co2 logical , intent(in) :: flds_wiso logical , intent(in) :: flds_presaero + logical , intent(in) :: flds_presndep integer , intent(out) :: rc ! local variables @@ -113,6 +114,9 @@ subroutine datm_datamode_jra_advertise(exportState, fldsexport, flds_scalar_name call dshr_fldList_add(fldsExport, 'Faxa_dstwet' , ungridded_lbound=1, ungridded_ubound=4) call dshr_fldList_add(fldsExport, 'Faxa_dstdry' , ungridded_lbound=1, ungridded_ubound=4) end if + if (flds_presndep) then + call dshr_fldList_add(fldsExport, 'Faxa_ndep', ungridded_lbound=1, ungridded_ubound=2) + end if if (flds_wiso) then call dshr_fldList_add(fldsExport, 'Faxa_rainc_wiso', ungridded_lbound=1, ungridded_ubound=3) call dshr_fldList_add(fldsExport, 'Faxa_rainl_wiso', ungridded_lbound=1, ungridded_ubound=3) From 153b5cd20b152adbdac06cfdc27490c694488a70 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Fri, 22 Apr 2022 12:32:40 -0600 Subject: [PATCH 06/25] added ndep stream functionality --- datm/cime_config/config_component.xml | 2 +- datm/cime_config/stream_definition_datm.xml | 3 ++- datm/datm_datamode_clmncep_mod.F90 | 26 ++++++++++++++++----- datm/datm_datamode_era5_mod.F90 | 1 + streams/dshr_stream_mod.F90 | 2 ++ 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/datm/cime_config/config_component.xml b/datm/cime_config/config_component.xml index 652f98d7e..8a5fac7b3 100644 --- a/datm/cime_config/config_component.xml +++ b/datm/cime_config/config_component.xml @@ -126,7 +126,7 @@ char - none,20tr,20tr.latbnd,omip,SSP1-1.9,SSP1-2.6,SSP2-4.5,SSP3-7.0,SSP4-3.4,SSP4-6.0,SSP5-3.4,SSP5-8.5,SSP1-1.9.latbnd,SSP1-2.6.latbnd,SSP2-4.5.latbnd,SSP3-7.0.latbnd,SSP4-3.4.latbnd,SSP4-6.0.latbnd,SSP5-3.4.latbnd,SSP5-8.5.latbnd + none,20tr,20tr.latbnd,omip.iaf,omip.jra,SSP1-1.9,SSP1-2.6,SSP2-4.5,SSP3-7.0,SSP4-3.4,SSP4-6.0,SSP5-3.4,SSP5-8.5,SSP1-1.9.latbnd,SSP1-2.6.latbnd,SSP2-4.5.latbnd,SSP3-7.0.latbnd,SSP4-3.4.latbnd,SSP4-6.0.latbnd,SSP5-3.4.latbnd,SSP5-8.5.latbnd none SSP1-1.9 diff --git a/datm/cime_config/stream_definition_datm.xml b/datm/cime_config/stream_definition_datm.xml index 26e42730c..ec3004693 100644 --- a/datm/cime_config/stream_definition_datm.xml +++ b/datm/cime_config/stream_definition_datm.xml @@ -133,7 +133,8 @@ ======================== co2tseries.20tr co2tseries.20tr.latbnd - co2tseries.omip + co2tseries.omip.iaf + co2tseries.omip.jra co2tseries.SSP1-1.9 co2tseries.SSP1-2.6 co2tseries.SSP2-4.5 diff --git a/datm/datm_datamode_clmncep_mod.F90 b/datm/datm_datamode_clmncep_mod.F90 index 9d126480c..6c24eaaa5 100644 --- a/datm/datm_datamode_clmncep_mod.F90 +++ b/datm/datm_datamode_clmncep_mod.F90 @@ -46,6 +46,7 @@ module datm_datamode_clmncep_mod real(r8), pointer :: Faxa_swvdr(:) => null() real(r8), pointer :: Faxa_swvdf(:) => null() real(r8), pointer :: Faxa_swnet(:) => null() + real(r8), pointer :: Faxa_ndep(:,:) => null() ! stream data real(r8), pointer :: strm_z(:) => null() @@ -234,6 +235,8 @@ subroutine datm_datamode_clmncep_init_pointers(importState, exportState, sdat, r if (ChkErr(rc,__LINE__,u_FILE_u)) return call shr_strdata_get_stream_pointer( sdat, 'Faxa_precn_HDO' , strm_precn_HDO, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return + call shr_strdata_get_stream_pointer( sdat, 'Faxa_precn_HDO' , strm_precn_HDO, rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return ! initialize pointers for module level stream arrays for bias correction call shr_strdata_get_stream_pointer( sdat, 'Faxa_precsf' , strm_precsf , rc) @@ -296,6 +299,12 @@ subroutine datm_datamode_clmncep_init_pointers(importState, exportState, sdat, r if (ChkErr(rc,__LINE__,u_FILE_u)) return call dshr_state_getfldptr(exportState, 'Faxa_lwdn' , fldptr1=Faxa_lwdn , rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return + call ESMF_StateGet(importstate, 'Faxa_ndep', itemFlag, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + if (itemflag /= ESMF_STATEITEM_NOTFOUND) then + call dshr_state_getfldptr(exportState, 'Faxa_ndep', fldptr2=Faxa_ndep, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + end if ! error check if (.not. associated(strm_wind) .or. .not. associated(strm_tbot)) then @@ -408,12 +417,12 @@ subroutine datm_datamode_clmncep_advance(mainproc, logunit, mpicom, rc) e = strm_rh(n) * 0.01_r8 * datm_esat(tbot,tbot) qsat = (0.622_r8 * e)/(pbot - 0.378_r8 * e) Sa_shum(n) = qsat -! if (associated(strm_rh_16O) .and. associated(strm_rh_18O) .and. associated(strm_rh_HDO)) then - ! for isotopic tracer specific humidity, expect a delta, just keep the delta from the input file -! Sa_shum_wiso(1,n) = strm_rh_16O(n) -! Sa_shum_wiso(2,n) = strm_rh_18O(n) -! Sa_shum_wiso(3,n) = strm_rh_HDO(n) -! end if + ! for isotopic tracer specific humidity, expect a delta, just keep the delta from the input file + ! if (associated(strm_rh_16O) .and. associated(strm_rh_18O) .and. associated(strm_rh_HDO)) then + ! Sa_shum_wiso(1,n) = strm_rh_16O(n) + ! Sa_shum_wiso(2,n) = strm_rh_18O(n) + ! Sa_shum_wiso(3,n) = strm_rh_HDO(n) + ! end if else if (associated(strm_tdew)) then if (tdewmax < 50.0_r8) strm_tdew(n) = strm_tdew(n) + tkFrz e = datm_esat(strm_tdew(n),tbot) @@ -543,6 +552,11 @@ subroutine datm_datamode_clmncep_advance(mainproc, logunit, mpicom, rc) endif ! bias correction / anomaly forcing ( end block ) + if (associated(Faxa_ndep)) then + ! Convert send ndep flux to units if kgN/m2/s (input is in gN/m2/s) + Faxa_ndep(:,:) = Faxa_ndep(:,:) / 1000._r8 + end if + end subroutine datm_datamode_clmncep_advance !=============================================================================== diff --git a/datm/datm_datamode_era5_mod.F90 b/datm/datm_datamode_era5_mod.F90 index a694f3588..792e5ba05 100644 --- a/datm/datm_datamode_era5_mod.F90 +++ b/datm/datm_datamode_era5_mod.F90 @@ -49,6 +49,7 @@ module datm_datamode_era5_mod real(r8), pointer :: Faxa_lat(:) => null() real(r8), pointer :: Faxa_taux(:) => null() real(r8), pointer :: Faxa_tauy(:) => null() + real(r8), pointer :: Faxa_ndep(:,:) => null() ! stream data real(r8), pointer :: strm_tdew(:) => null() diff --git a/streams/dshr_stream_mod.F90 b/streams/dshr_stream_mod.F90 index 8f9d13018..acfef4301 100644 --- a/streams/dshr_stream_mod.F90 +++ b/streams/dshr_stream_mod.F90 @@ -1698,9 +1698,11 @@ subroutine shr_stream_restIO(pioid, streams, mode) if (mode .eq. 'define') then rcode = pio_def_dim(pioid, 'strlen', CL, dimid_str) do k=1,size(streams) + ! maxnfiles is the maximum number of files across all streams if (streams(k)%nfiles > maxnfiles) then maxnfiles = streams(k)%nfiles endif + ! maxnt is the maximum number of time samples across all possible stream files do n=1,streams(k)%nFiles if( streams(k)%file(n)%nt > maxnt) then maxnt = streams(k)%file(n)%nt From 2201db42a0f24731dddce800b04420945d953cd9 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Thu, 28 Apr 2022 09:50:25 -0600 Subject: [PATCH 07/25] first changes for ozone stream --- datm/cime_config/config_component.xml | 13 ++++++++ datm/cime_config/stream_definition_datm.xml | 36 +++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/datm/cime_config/config_component.xml b/datm/cime_config/config_component.xml index eed8a082d..1940a3310 100644 --- a/datm/cime_config/config_component.xml +++ b/datm/cime_config/config_component.xml @@ -112,6 +112,19 @@ DATM prescribed nitrogen deposition forcing + + char + none,clim_2000 + clim_2000 + + clim_2000 + none + + run_component_datm + env_run.xml + DATM prescribed ozone forcing + + char none,observed,cplhist diff --git a/datm/cime_config/stream_definition_datm.xml b/datm/cime_config/stream_definition_datm.xml index 590151bf0..71bbabbf9 100644 --- a/datm/cime_config/stream_definition_datm.xml +++ b/datm/cime_config/stream_definition_datm.xml @@ -181,6 +181,7 @@ presndep.clim_2000 presndep.clim_2010 presndep.hist + presozone.hist presndep.SSP1-2.6 presndep.SSP2-4.5 presndep.SSP3-7.0 @@ -3999,6 +4000,41 @@ single + + + + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + /glade/work/dll/O3ForcingFiles/full_transient_surface_ozone_rcp85_1.9x2.5.nc + + + O3 Sa_o3 + + null + + bilinear + + null + 1 + 2000 + 2000 + 0 + + linear + + + cycle + + + 1.5 + + single + + From 93802ac406eda7684b967825325cb263a759120c Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Tue, 3 May 2022 20:05:19 -0600 Subject: [PATCH 08/25] added ozone stream --- datm/atm_comp_nuopc.F90 | 9 ++++++--- datm/cime_config/buildnml | 8 ++++++++ datm/cime_config/config_component.xml | 2 +- datm/cime_config/stream_definition_datm.xml | 13 +++++++++---- datm/datm_datamode_clmncep_mod.F90 | 10 +++++++--- 5 files changed, 31 insertions(+), 11 deletions(-) diff --git a/datm/atm_comp_nuopc.F90 b/datm/atm_comp_nuopc.F90 index a8de65f99..018a098e8 100644 --- a/datm/atm_comp_nuopc.F90 +++ b/datm/atm_comp_nuopc.F90 @@ -124,6 +124,7 @@ module cdeps_datm_comp character(CL) :: factorFn_data = 'null' ! file containing correction factors data logical :: flds_presaero = .false. ! true => send valid prescribed aero fields to mediator logical :: flds_presndep = .false. ! true => send valid prescribed ndep fields to mediator + logical :: flds_preso3 = .false. ! true => send valid prescribed ozone fields to mediator logical :: flds_co2 = .false. ! true => send prescribed co2 to mediator logical :: flds_wiso = .false. ! true => send water isotopes to mediator character(CL) :: bias_correct = nullstr ! send bias correction fields to coupler @@ -230,7 +231,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) model_meshfile, model_maskfile, & nx_global, ny_global, restfilm, iradsw, factorFn_data, factorFn_mesh, & flds_presaero, flds_co2, flds_wiso, bias_correct, anomaly_forcing, & - skip_restart_read, flds_presndep + skip_restart_read, flds_presndep, flds_preso3 rc = ESMF_SUCCESS @@ -270,6 +271,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) call shr_mpi_bcast(restfilm , mpicom, 'restfilm') call shr_mpi_bcast(flds_presaero , mpicom, 'flds_presaero') call shr_mpi_bcast(flds_presndep , mpicom, 'flds_presndep') + call shr_mpi_bcast(flds_preso3 , mpicom, 'flds_preso3') call shr_mpi_bcast(flds_co2 , mpicom, 'flds_co2') call shr_mpi_bcast(flds_wiso , mpicom, 'flds_wiso') call shr_mpi_bcast(skip_restart_read , mpicom, 'skip_restart_read') @@ -288,6 +290,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) write(logunit,F00)' factorFn_mesh = ',trim(factorFn_mesh) write(logunit,F02)' flds_presaero = ',flds_presaero write(logunit,F02)' flds_presndep = ',flds_presndep + write(logunit,F02)' flds_preso3 = ',flds_preso3 write(logunit,F02)' flds_co2 = ',flds_co2 write(logunit,F02)' flds_wiso = ',flds_wiso write(logunit,F02)' skip_restart_read = ',skip_restart_read @@ -319,11 +322,11 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return case ('CLMNCEP') call datm_datamode_clmncep_advertise(exportState, fldsExport, flds_scalar_name, & - flds_co2, flds_wiso, flds_presaero, flds_presndep, rc) + flds_co2, flds_wiso, flds_presaero, flds_presndep, flds_preso3, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return case ('CPLHIST') call datm_datamode_cplhist_advertise(exportState, fldsExport, flds_scalar_name, & - flds_co2, flds_wiso, flds_presaero, flds_presndep, rc) + flds_co2, flds_wiso, flds_presaero, flds_presndep, flds_preso3, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return case ('ERA5') call datm_datamode_era5_advertise(exportState, fldsExport, flds_scalar_name, rc) diff --git a/datm/cime_config/buildnml b/datm/cime_config/buildnml index 0a0f41ec5..ae5a1b35b 100755 --- a/datm/cime_config/buildnml +++ b/datm/cime_config/buildnml @@ -105,6 +105,7 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path datm_topo = case.get_value("DATM_TOPO") datm_presaero = case.get_value("DATM_PRESAERO") datm_presndep = case.get_value("DATM_PRESNDEP") + datm_preso3 = case.get_value("DATM_PRESO3") datm_co2_tseries = case.get_value("DATM_CO2_TSERIES") atm_grid = case.get_value("ATM_GRID") model_grid = case.get_value("GRID") @@ -116,6 +117,8 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path "A DATM_MODE for CLM is incompatible with DATM_PRESAERO=none.") expect(datm_presndep != "none", "A DATM_MODE for CLM is incompatible with DATM_PRESNDEP=none.") + expect(datm_preso3 != "none", + "A DATM_MODE for CLM is incompatible with DATM_PRESO3=none.") expect(datm_topo != "none", "A DATM_MODE for CLM is incompatible with DATM_TOPO=none.") @@ -124,6 +127,7 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path logger.debug("DATM grid is {}".format(atm_grid)) logger.debug("DATM presaero mode is {}".format(datm_presaero)) logger.debug("DATM presndep mode is {}".format(datm_presndep)) + logger.debug("DATM preso3 mode is {}".format(datm_preso3)) logger.debug("DATM topo mode is {}".format(datm_topo)) # Initialize namelist defaults @@ -143,6 +147,7 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path config['datm_co2_tseries'] = datm_co2_tseries config['datm_presaero'] = datm_presaero config['datm_presndep'] = datm_presndep + config['datm_preso3'] = datm_preso3 if case.get_value('PTS_LON'): scol_lon = float(case.get_value('PTS_LON')) @@ -173,10 +178,13 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path streamlist.append("presaero.{}".format(datm_presaero)) if datm_presndep != "none": streamlist.append("presndep.{}".format(datm_presndep)) + if datm_presndep != "none": + streamlist.append("preso3.{}".format(datm_preso3)) if datm_topo != "none": streamlist.append("topo.{}".format(datm_topo)) if datm_co2_tseries != "none": streamlist.append("co2tseries.{}".format(datm_co2_tseries)) + bias_correct = nmlgen.get_value("bias_correct") if bias_correct is not None: streamlist.append(bias_correct) diff --git a/datm/cime_config/config_component.xml b/datm/cime_config/config_component.xml index 1940a3310..c244d0e94 100644 --- a/datm/cime_config/config_component.xml +++ b/datm/cime_config/config_component.xml @@ -112,7 +112,7 @@ DATM prescribed nitrogen deposition forcing - + char none,clim_2000 clim_2000 diff --git a/datm/cime_config/stream_definition_datm.xml b/datm/cime_config/stream_definition_datm.xml index 71bbabbf9..77ef84074 100644 --- a/datm/cime_config/stream_definition_datm.xml +++ b/datm/cime_config/stream_definition_datm.xml @@ -181,13 +181,18 @@ presndep.clim_2000 presndep.clim_2010 presndep.hist - presozone.hist presndep.SSP1-2.6 presndep.SSP2-4.5 presndep.SSP3-7.0 presndep.SSP5-8.5 presndep.cplhist + ======================== + optional stream ozone + - DATM_NDEP is set by the 4 character time prefix in config_component.xml + ======================== + presozone.hist + ======================== optional stream topo (turned on and stream specified by xml variable DATM_TOPO) ======================== @@ -4001,15 +4006,15 @@ - + - + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/dll/O3ForcingFiles/full_transient_surface_ozone_rcp85_1.9x2.5.nc + /glade/work/mvertens/ozone_damage_files/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.cdf5.no_lev.nc O3 Sa_o3 diff --git a/datm/datm_datamode_clmncep_mod.F90 b/datm/datm_datamode_clmncep_mod.F90 index 6c24eaaa5..dbb0175fe 100644 --- a/datm/datm_datamode_clmncep_mod.F90 +++ b/datm/datm_datamode_clmncep_mod.F90 @@ -36,6 +36,7 @@ module datm_datamode_clmncep_mod real(r8), pointer :: Sa_dens(:) => null() real(r8), pointer :: Sa_pbot(:) => null() real(r8), pointer :: Sa_pslv(:) => null() + real(r8), pointer :: Sa_o3(:,:) => null() real(r8), pointer :: Faxa_lwdn(:) => null() real(r8), pointer :: Faxa_rainc(:) => null() real(r8), pointer :: Faxa_rainl(:) => null() @@ -113,7 +114,7 @@ module datm_datamode_clmncep_mod !=============================================================================== subroutine datm_datamode_clmncep_advertise(exportState, fldsexport, flds_scalar_name, & - flds_co2, flds_wiso, flds_presaero, flds_presndep, rc) + flds_co2, flds_wiso, flds_presaero, flds_presndep, flds_preso3, rc) ! input/output variables type(esmf_State) , intent(inout) :: exportState @@ -122,6 +123,7 @@ subroutine datm_datamode_clmncep_advertise(exportState, fldsexport, flds_scalar_ logical , intent(in) :: flds_wiso logical , intent(in) :: flds_presaero logical , intent(in) :: flds_presndep + logical , intent(in) :: flds_preso3 character(len=*) , intent(in) :: flds_scalar_name integer , intent(out) :: rc @@ -157,6 +159,9 @@ subroutine datm_datamode_clmncep_advertise(exportState, fldsexport, flds_scalar_ call dshr_fldList_add(fldsExport, 'Sa_co2prog') call dshr_fldList_add(fldsExport, 'Sa_co2diag') end if + if (flds_preso3) then + call dshr_fldList_add(fldsExport, 'Sa_o3') + end if if (flds_presaero) then call dshr_fldList_add(fldsExport, 'Faxa_bcph' , ungridded_lbound=1, ungridded_ubound=3) call dshr_fldList_add(fldsExport, 'Faxa_ocph' , ungridded_lbound=1, ungridded_ubound=3) @@ -298,8 +303,7 @@ subroutine datm_datamode_clmncep_init_pointers(importState, exportState, sdat, r call dshr_state_getfldptr(exportState, 'Faxa_swnet' , fldptr1=Faxa_swnet , rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call dshr_state_getfldptr(exportState, 'Faxa_lwdn' , fldptr1=Faxa_lwdn , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_StateGet(importstate, 'Faxa_ndep', itemFlag, rc=rc) + call ESMF_StateGet(exportstate, 'Faxa_ndep', itemFlag, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (itemflag /= ESMF_STATEITEM_NOTFOUND) then call dshr_state_getfldptr(exportState, 'Faxa_ndep', fldptr2=Faxa_ndep, rc=rc) From 94e013c099a7f94f2b4b46b029f356c488541712 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Wed, 4 May 2022 10:09:00 -0600 Subject: [PATCH 09/25] more updates for ozone --- datm/atm_comp_nuopc.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/datm/atm_comp_nuopc.F90 b/datm/atm_comp_nuopc.F90 index 018a098e8..99a91841b 100644 --- a/datm/atm_comp_nuopc.F90 +++ b/datm/atm_comp_nuopc.F90 @@ -326,7 +326,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return case ('CPLHIST') call datm_datamode_cplhist_advertise(exportState, fldsExport, flds_scalar_name, & - flds_co2, flds_wiso, flds_presaero, flds_presndep, flds_preso3, rc) + flds_co2, flds_wiso, flds_presaero, flds_presndep, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return case ('ERA5') call datm_datamode_era5_advertise(exportState, fldsExport, flds_scalar_name, rc) @@ -777,7 +777,7 @@ subroutine datm_init_dfields(rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return case('Faxa_ndep') strm_flds2 = (/'Faxa_ndep_nhx', 'Faxa_ndep_noy'/) - call dshr_dfield_add(dfields, sdat, trim(lfieldnames(n)), strm_flds2, exportState, logunit, masterproc, rc) + call dshr_dfield_add(dfields, sdat, trim(lfieldnames(n)), strm_flds2, exportState, logunit, mainproc, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end select From 3810c33792532ab2a3445ccdca6f6ea9b66a0093 Mon Sep 17 00:00:00 2001 From: Adrianna Foster Date: Wed, 17 Aug 2022 09:02:18 -0600 Subject: [PATCH 10/25] update to fix some typos and add dshr_state_check for o3 --- datm/cime_config/buildnml | 2 +- datm/datm_datamode_clmncep_mod.F90 | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/datm/cime_config/buildnml b/datm/cime_config/buildnml index d78c207b1..0588f19a5 100755 --- a/datm/cime_config/buildnml +++ b/datm/cime_config/buildnml @@ -178,7 +178,7 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path streamlist.append("presaero.{}".format(datm_presaero)) if datm_presndep != "none": streamlist.append("presndep.{}".format(datm_presndep)) - if datm_presndep != "none": + if datm_preso3 != "none": streamlist.append("preso3.{}".format(datm_preso3)) if datm_topo != "none": streamlist.append("topo.{}".format(datm_topo)) diff --git a/datm/datm_datamode_clmncep_mod.F90 b/datm/datm_datamode_clmncep_mod.F90 index 604b3e378..47c754a94 100644 --- a/datm/datm_datamode_clmncep_mod.F90 +++ b/datm/datm_datamode_clmncep_mod.F90 @@ -36,7 +36,7 @@ module datm_datamode_clmncep_mod real(r8), pointer :: Sa_dens(:) => null() real(r8), pointer :: Sa_pbot(:) => null() real(r8), pointer :: Sa_pslv(:) => null() - real(r8), pointer :: Sa_o3(:,:) => null() + real(r8), pointer :: Sa_o3(:) => null() real(r8), pointer :: Faxa_lwdn(:) => null() real(r8), pointer :: Faxa_rainc(:) => null() real(r8), pointer :: Faxa_rainl(:) => null() @@ -311,11 +311,10 @@ subroutine datm_datamode_clmncep_init_pointers(importState, exportState, sdat, r call dshr_state_getfldptr(exportState, 'Faxa_ndep', fldptr2=Faxa_ndep, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end if - - call ESMF_StateGet(exportstate, 'Faxa_ndep', itemFlag, rc=rc) + call ESMF_StateGet(exportstate, 'Sa_o3', itemFlag, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (itemflag /= ESMF_STATEITEM_NOTFOUND) then - call dshr_state_getfldptr(exportState, 'Faxa_ndep', fldptr2=Faxa_ndep, rc=rc) + call dshr_state_getfldptr(exportState, 'Sa_o3', fldptr1=Sa_o3, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end if From 6e9969ad802c4ec3bda26ae263e66040ee741bde Mon Sep 17 00:00:00 2001 From: adrifoster Date: Wed, 17 Aug 2022 09:35:43 -0600 Subject: [PATCH 11/25] add flds_preso3 to namelist definition --- datm/cime_config/namelist_definition_datm.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/datm/cime_config/namelist_definition_datm.xml b/datm/cime_config/namelist_definition_datm.xml index 3ea0bef64..c677bffe0 100644 --- a/datm/cime_config/namelist_definition_datm.xml +++ b/datm/cime_config/namelist_definition_datm.xml @@ -279,6 +279,19 @@ + + logical + datm + datm_nml + + If true, prescribed o3 is sent from datm (must be true for running with CLM). + + + .true. + .false. + + + logical datm From da9b5422f3bf9fbfdf777ca68af50238dae185b0 Mon Sep 17 00:00:00 2001 From: adrifoster Date: Wed, 17 Aug 2022 10:20:26 -0600 Subject: [PATCH 12/25] set flds_preso3 to default false --- datm/cime_config/namelist_definition_datm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datm/cime_config/namelist_definition_datm.xml b/datm/cime_config/namelist_definition_datm.xml index c677bffe0..4379e3c52 100644 --- a/datm/cime_config/namelist_definition_datm.xml +++ b/datm/cime_config/namelist_definition_datm.xml @@ -287,7 +287,7 @@ If true, prescribed o3 is sent from datm (must be true for running with CLM). - .true. + .false. .false. From d98af44c02d283a01205926bcb32943043b20e61 Mon Sep 17 00:00:00 2001 From: Adrianna Foster Date: Wed, 17 Aug 2022 11:04:01 -0600 Subject: [PATCH 13/25] typo fix --- datm/cime_config/namelist_definition_datm.xml | 2 +- datm/datm_datamode_clmncep_mod.F90 | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/datm/cime_config/namelist_definition_datm.xml b/datm/cime_config/namelist_definition_datm.xml index 4379e3c52..c677bffe0 100644 --- a/datm/cime_config/namelist_definition_datm.xml +++ b/datm/cime_config/namelist_definition_datm.xml @@ -287,7 +287,7 @@ If true, prescribed o3 is sent from datm (must be true for running with CLM). - .false. + .true. .false. diff --git a/datm/datm_datamode_clmncep_mod.F90 b/datm/datm_datamode_clmncep_mod.F90 index 47c754a94..93861a36f 100644 --- a/datm/datm_datamode_clmncep_mod.F90 +++ b/datm/datm_datamode_clmncep_mod.F90 @@ -305,12 +305,15 @@ subroutine datm_datamode_clmncep_init_pointers(importState, exportState, sdat, r call dshr_state_getfldptr(exportState, 'Faxa_swnet' , fldptr1=Faxa_swnet , rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call dshr_state_getfldptr(exportState, 'Faxa_lwdn' , fldptr1=Faxa_lwdn , rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + call ESMF_StateGet(exportstate, 'Faxa_ndep', itemFlag, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (itemflag /= ESMF_STATEITEM_NOTFOUND) then call dshr_state_getfldptr(exportState, 'Faxa_ndep', fldptr2=Faxa_ndep, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end if + call ESMF_StateGet(exportstate, 'Sa_o3', itemFlag, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (itemflag /= ESMF_STATEITEM_NOTFOUND) then From 5ab6093be0d65373cdde680000eced93df201957 Mon Sep 17 00:00:00 2001 From: Adrianna Foster Date: Thu, 18 Aug 2022 13:28:16 -0600 Subject: [PATCH 14/25] update file name --- datm/cime_config/stream_definition_datm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datm/cime_config/stream_definition_datm.xml b/datm/cime_config/stream_definition_datm.xml index c1986dc88..ec90d9ec3 100644 --- a/datm/cime_config/stream_definition_datm.xml +++ b/datm/cime_config/stream_definition_datm.xml @@ -4014,7 +4014,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/mvertens/ozone_damage_files/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.cdf5.no_lev.nc + /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412_cdf5.nc O3 Sa_o3 From 975a566d69c4c991751c0d883b8a4a3e97ed34bb Mon Sep 17 00:00:00 2001 From: adrifoster Date: Thu, 18 Aug 2022 13:39:50 -0600 Subject: [PATCH 15/25] add more ozone stream_entries --- datm/cime_config/stream_definition_datm.xml | 196 +++++++++++++++++++- 1 file changed, 193 insertions(+), 3 deletions(-) diff --git a/datm/cime_config/stream_definition_datm.xml b/datm/cime_config/stream_definition_datm.xml index ec90d9ec3..4d0bd107e 100644 --- a/datm/cime_config/stream_definition_datm.xml +++ b/datm/cime_config/stream_definition_datm.xml @@ -188,10 +188,12 @@ presndep.cplhist ======================== - optional stream ozone - - DATM_NDEP is set by the 4 character time prefix in config_component.xml + optional stream ozone (stream specified by xml variable DATM_PRESO3) ======================== - presozone.hist + preso3.clim_1850 + preso3.clim_2000 + preso3.hist + ======================== optional stream topo (turned on and stream specified by xml variable DATM_TOPO) @@ -4009,6 +4011,37 @@ + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412_cdf5.nc + + + O3 Sa_o3 + + null + + bilinear + + null + 1 + 1850 + 1850 + 0 + + linear + + + cycle + + + 1.5 + + single + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc @@ -4040,6 +4073,163 @@ single + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412_cdf5.nc + + + O3 Sa_o3 + + null + + bilinear + + null + 1 + 2010 + 2010 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412_cdf5.nc + + + O3 Sa_o3 + + null + + bilinear + + null + 1850 + 1850 + 2014 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-SSP2-4.5-WACCM.001.monthly.201501-210012.nc + + + O3 Sa_o3 + + null + + bilinear + + null + 2015 + 2015 + 2101 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-SSP3-7.0-WACCM.001.monthly.201501-210012.nc + + + O3 Sa_o3 + + null + + bilinear + + null + 2015 + 2015 + 2101 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-SSP5-8.5-WACCM.001.monthly.201501-210012.nc + + + O3 Sa_o3 + + null + + bilinear + + null + 2015 + 2015 + 2101 + 0 + + linear + + + cycle + + + 1.5 + + single + + + + From a6eca8e70392d4c540c7a8ac4dbf9723374ed889 Mon Sep 17 00:00:00 2001 From: adrifoster Date: Thu, 18 Aug 2022 13:44:47 -0600 Subject: [PATCH 16/25] add compset stream matches --- datm/cime_config/config_component.xml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/datm/cime_config/config_component.xml b/datm/cime_config/config_component.xml index c244d0e94..c1057598f 100644 --- a/datm/cime_config/config_component.xml +++ b/datm/cime_config/config_component.xml @@ -114,10 +114,16 @@ char - none,clim_2000 + none,clim_1850,clim_2000,clim_2010,hist,SSP2-4.5,SSP3-7.0,SSP5-8.5 clim_2000 - clim_2000 + clim_1850 + clim_2000 + clim_2010 + SSP2-4.5 + SSP3-7.0 + SSP5-8.5 + hist none run_component_datm From 4c23fca07b63c551fa1ae08ecdd4fedc265a8fec Mon Sep 17 00:00:00 2001 From: adrifoster Date: Fri, 19 Aug 2022 08:27:14 -0600 Subject: [PATCH 17/25] update stream definitions --- datm/cime_config/config_component.xml | 1 + datm/cime_config/stream_definition_datm.xml | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/datm/cime_config/config_component.xml b/datm/cime_config/config_component.xml index c1057598f..536b08739 100644 --- a/datm/cime_config/config_component.xml +++ b/datm/cime_config/config_component.xml @@ -124,6 +124,7 @@ SSP3-7.0 SSP5-8.5 hist + hist none run_component_datm diff --git a/datm/cime_config/stream_definition_datm.xml b/datm/cime_config/stream_definition_datm.xml index 4d0bd107e..efb17aa66 100644 --- a/datm/cime_config/stream_definition_datm.xml +++ b/datm/cime_config/stream_definition_datm.xml @@ -193,6 +193,9 @@ preso3.clim_1850 preso3.clim_2000 preso3.hist + preso3.SSP2-4.5 + preso3.SSP3-7.0 + preso3.SSP5-8.5 ======================== @@ -4152,7 +4155,7 @@ null 2015 2015 - 2101 + 2100 0 linear @@ -4183,7 +4186,7 @@ null 2015 2015 - 2101 + 2100 0 linear @@ -4214,7 +4217,7 @@ null 2015 2015 - 2101 + 2100 0 linear From 7cd1ca1c81a133c61d4a79ddcbf030531ef79f4a Mon Sep 17 00:00:00 2001 From: adrifoster Date: Thu, 25 Aug 2022 11:19:12 -0600 Subject: [PATCH 18/25] create drv_flds_in file --- datm/cime_config/buildnml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/datm/cime_config/buildnml b/datm/cime_config/buildnml index 0588f19a5..ba6c8084b 100755 --- a/datm/cime_config/buildnml +++ b/datm/cime_config/buildnml @@ -201,6 +201,26 @@ def _create_namelists(case, confdir, inst_string, infile, nmlgen, data_list_path os.path.join(caseroot,'user_nl_datm_streams'+inst_string), available_neon_data=available_neon_data) + +#################################################################################### +def _create_drv_flds_in(case, confdir): +#################################################################################### + datm_preso3 = case.get_value("DATM_PRESO3") + + # for now we are hard-coding this file name and values because we only need it for ozone + if datm_preso3 != "none": + # Generate drv_flds_in file + outfile = os.path.join(confdir, "drv_flds_in") + ozone_nl_name = "&ozone_coupling_nl" + ozone_freq_val = "'multiday_average'" + nl_fin = "\\" + + with open(outfile, "w") as drv_fl: + drv_fl.write("{}\n".format(ozone_nl_name)) + drv_fl.write("{}\n".format(ozone_freq_val)) + drv_fl.write("{}\n".format(nl_fin)) + + ############################################################################### def buildnml(case, caseroot, compname): ############################################################################### @@ -275,6 +295,8 @@ def buildnml(case, caseroot, compname): # create namelist and stream file(s) data component _create_namelists(case, confdir, inst_string, namelist_infile, nmlgen, data_list_path) + _create_drv_flds_in(case, confdir) + # copy namelist files and stream text files, to rundir copy_inputs_to_rundir(caseroot, compname, confdir, rundir, inst_string) From 32801b5ff7b0bd3cccf861edc25f5c7210659710 Mon Sep 17 00:00:00 2001 From: Adrianna Foster Date: Thu, 25 Aug 2022 11:23:59 -0600 Subject: [PATCH 19/25] update file names --- datm/cime_config/stream_definition_datm.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/datm/cime_config/stream_definition_datm.xml b/datm/cime_config/stream_definition_datm.xml index efb17aa66..ce8e75493 100644 --- a/datm/cime_config/stream_definition_datm.xml +++ b/datm/cime_config/stream_definition_datm.xml @@ -4019,7 +4019,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412_cdf5.nc + /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.nc O3 Sa_o3 @@ -4050,7 +4050,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412_cdf5.nc + /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.nc O3 Sa_o3 @@ -4081,7 +4081,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412_cdf5.nc + /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.nc O3 Sa_o3 @@ -4112,7 +4112,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412_cdf5.nc + /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.nc O3 Sa_o3 @@ -4143,7 +4143,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-SSP2-4.5-WACCM.001.monthly.201501-210012.nc + /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-SSP2-4.5-WACCM.001.monthly.201501-210012.nc O3 Sa_o3 @@ -4174,7 +4174,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-SSP3-7.0-WACCM.001.monthly.201501-210012.nc + /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-SSP3-7.0-WACCM.001.monthly.201501-210012.nc O3 Sa_o3 @@ -4205,7 +4205,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/O3_surface.f09_g17.CMIP6-SSP5-8.5-WACCM.001.monthly.201501-210012.nc + /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-SSP5-8.5-WACCM.001.monthly.201501-210012.nc O3 Sa_o3 From 0ef7a64dbd7effa6a422ca9f4da12fa1be258662 Mon Sep 17 00:00:00 2001 From: Adrianna Foster Date: Fri, 26 Aug 2022 13:27:19 -0600 Subject: [PATCH 20/25] update presaero stream entry and presndep stream entries - typo fixes --- datm/cime_config/buildnml | 9 ++-- datm/cime_config/stream_definition_datm.xml | 46 ++++++++++++++++++++- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/datm/cime_config/buildnml b/datm/cime_config/buildnml index ba6c8084b..575949b10 100755 --- a/datm/cime_config/buildnml +++ b/datm/cime_config/buildnml @@ -209,18 +209,21 @@ def _create_drv_flds_in(case, confdir): # for now we are hard-coding this file name and values because we only need it for ozone if datm_preso3 != "none": - # Generate drv_flds_in file + + # Generate drv_flds_in file outfile = os.path.join(confdir, "drv_flds_in") ozone_nl_name = "&ozone_coupling_nl" + ozone_freq_par = "atm_ozone_frequency" ozone_freq_val = "'multiday_average'" - nl_fin = "\\" + nl_fin = "/" with open(outfile, "w") as drv_fl: drv_fl.write("{}\n".format(ozone_nl_name)) - drv_fl.write("{}\n".format(ozone_freq_val)) + drv_fl.write(" {} = {}\n".format(ozone_freq_par, ozone_freq_val)) drv_fl.write("{}\n".format(nl_fin)) + ############################################################################### def buildnml(case, caseroot, compname): ############################################################################### diff --git a/datm/cime_config/stream_definition_datm.xml b/datm/cime_config/stream_definition_datm.xml index ce8e75493..c370d08fa 100644 --- a/datm/cime_config/stream_definition_datm.xml +++ b/datm/cime_config/stream_definition_datm.xml @@ -4009,6 +4009,50 @@ single + + + + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + + + $DIN_LOC_ROOT/atm/cam/chem/trop_mozart_aero/aero/aerodep_clm_SSP585_b.e21.BSSP585cmip6.f09_g17.CMIP6-SSP5-8.5.001_2014-2101_monthly_0.9x1.25_c190419.nc + + + BCDEPWET Faxa_bcphiwet + BCPHODRY Faxa_bcphodry + BCPHIDRY Faxa_bcphidry + OCDEPWET Faxa_ocphiwet + OCPHIDRY Faxa_ocphidry + OCPHODRY Faxa_ocphodry + DSTX01WD Faxa_dstwet1 + DSTX01DD Faxa_dstdry1 + DSTX02WD Faxa_dstwet2 + DSTX02DD Faxa_dstdry2 + DSTX03WD Faxa_dstwet3 + DSTX03DD Faxa_dstdry3 + DSTX04WD Faxa_dstwet4 + DSTX04DD Faxa_dstdry4 + + null + + bilinear + + null + 2015 + 2015 + 2101 + 0 + + linear + + + cycle + + + 1.5 + + single + @@ -4402,7 +4446,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - $DIN_LOC_ROOT/lnd/clm2/ndepdata/lnd/clm2/fndepdata/fndep_clm_f09_g17.CMIP6-SSP2-4.5-WACCM_1849-2101_monthly_c191007.nc + $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_f09_g17.CMIP6-SSP2-4.5-WACCM_1849-2101_monthly_c191007.nc NDEP_NHx_month Faxa_ndep_nhx From 7f47d600a5cc5a4086df10a208d32b3ced386b26 Mon Sep 17 00:00:00 2001 From: adrifoster Date: Fri, 26 Aug 2022 13:43:32 -0600 Subject: [PATCH 21/25] update ozone file locations --- datm/cime_config/stream_definition_datm.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/datm/cime_config/stream_definition_datm.xml b/datm/cime_config/stream_definition_datm.xml index c370d08fa..c29decdca 100644 --- a/datm/cime_config/stream_definition_datm.xml +++ b/datm/cime_config/stream_definition_datm.xml @@ -4009,7 +4009,7 @@ single - + $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc @@ -4063,7 +4063,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.nc + $DIN_LOC_ROOT/cdeps/datm/ozone/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.nc O3 Sa_o3 @@ -4094,7 +4094,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.nc + $DIN_LOC_ROOT/cdeps/datm/ozone/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.nc O3 Sa_o3 @@ -4125,7 +4125,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.nc + $DIN_LOC_ROOT/cdeps/datm/ozone/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.nc O3 Sa_o3 @@ -4156,7 +4156,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.nc + $DIN_LOC_ROOT/cdeps/datm/ozone/O3_surface.f09_g17.CMIP6-historical-WACCM.001.monthly.185001-201412.nc O3 Sa_o3 @@ -4187,7 +4187,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-SSP2-4.5-WACCM.001.monthly.201501-210012.nc + $DIN_LOC_ROOT/cdeps/datm/ozone/O3_surface.f09_g17.CMIP6-SSP2-4.5-WACCM.001.monthly.201501-210012.nc O3 Sa_o3 @@ -4218,7 +4218,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-SSP3-7.0-WACCM.001.monthly.201501-210012.nc + $DIN_LOC_ROOT/cdeps/datm/ozone/O3_surface.f09_g17.CMIP6-SSP3-7.0-WACCM.001.monthly.201501-210012.nc O3 Sa_o3 @@ -4249,7 +4249,7 @@ $DIN_LOC_ROOT/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc - /glade/work/afoster/ozone_damage_files/converted/O3_surface.f09_g17.CMIP6-SSP5-8.5-WACCM.001.monthly.201501-210012.nc + $DIN_LOC_ROOT/cdeps/datm/ozone/O3_surface.f09_g17.CMIP6-SSP5-8.5-WACCM.001.monthly.201501-210012.nc O3 Sa_o3 From 540e0cfaf95c1ac6e0bb590541808647b5f8d19c Mon Sep 17 00:00:00 2001 From: adrifoster Date: Tue, 30 Aug 2022 13:44:46 -0600 Subject: [PATCH 22/25] updaing config component for stub/data land --- datm/cime_config/config_component.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/datm/cime_config/config_component.xml b/datm/cime_config/config_component.xml index 536b08739..a20e13336 100644 --- a/datm/cime_config/config_component.xml +++ b/datm/cime_config/config_component.xml @@ -125,7 +125,8 @@ SSP5-8.5 hist hist - none + none + none run_component_datm env_run.xml From bc449c5430db42be99d912af9b67fcabf3e16eb8 Mon Sep 17 00:00:00 2001 From: adrifoster Date: Tue, 30 Aug 2022 13:49:15 -0600 Subject: [PATCH 23/25] add comment about stub land --- datm/cime_config/config_component.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/datm/cime_config/config_component.xml b/datm/cime_config/config_component.xml index a20e13336..221cbb931 100644 --- a/datm/cime_config/config_component.xml +++ b/datm/cime_config/config_component.xml @@ -125,6 +125,7 @@ SSP5-8.5 hist hist + none none From b3712378745937e771260a3581ef5bc99603ded8 Mon Sep 17 00:00:00 2001 From: adrifoster Date: Wed, 31 Aug 2022 11:23:17 -0600 Subject: [PATCH 24/25] fix typo in comment --- datm/datm_datamode_clmncep_mod.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/datm/datm_datamode_clmncep_mod.F90 b/datm/datm_datamode_clmncep_mod.F90 index 93861a36f..6c376d902 100644 --- a/datm/datm_datamode_clmncep_mod.F90 +++ b/datm/datm_datamode_clmncep_mod.F90 @@ -306,14 +306,14 @@ subroutine datm_datamode_clmncep_init_pointers(importState, exportState, sdat, r if (ChkErr(rc,__LINE__,u_FILE_u)) return call dshr_state_getfldptr(exportState, 'Faxa_lwdn' , fldptr1=Faxa_lwdn , rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - + call ESMF_StateGet(exportstate, 'Faxa_ndep', itemFlag, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (itemflag /= ESMF_STATEITEM_NOTFOUND) then call dshr_state_getfldptr(exportState, 'Faxa_ndep', fldptr2=Faxa_ndep, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end if - + call ESMF_StateGet(exportstate, 'Sa_o3', itemFlag, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (itemflag /= ESMF_STATEITEM_NOTFOUND) then @@ -574,7 +574,7 @@ subroutine datm_datamode_clmncep_advance(mainproc, logunit, mpicom, rc) ! bias correction / anomaly forcing ( end block ) if (associated(Faxa_ndep)) then - ! Convert send ndep flux to units if kgN/m2/s (input is in gN/m2/s) + ! convert ndep flux to units of kgN/m2/s (input is in gN/m2/s) Faxa_ndep(:,:) = Faxa_ndep(:,:) / 1000._r8 end if From e760d8e53f07e04dfddf78c8c990980825553823 Mon Sep 17 00:00:00 2001 From: adrifoster Date: Thu, 1 Sep 2022 10:46:06 -0600 Subject: [PATCH 25/25] fix small typo --- datm/cime_config/config_component.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datm/cime_config/config_component.xml b/datm/cime_config/config_component.xml index 221cbb931..9ff459f51 100644 --- a/datm/cime_config/config_component.xml +++ b/datm/cime_config/config_component.xml @@ -92,7 +92,7 @@ char - none,clim_1850,clim_2000,clim_2010,hist,SSP1-2.6,SSP2-4.5,SSP3-7.0,SSP5-3.4,SSP5-8.5 + none,clim_1850,clim_2000,clim_2010,hist,SSP1-2.6,SSP2-4.5,SSP3-7.0,SSP5-3.4,SSP5-8.5,cplhist clim_2000 clim_1850