|
| 1 | +.. _data-atm: |
| 2 | + |
| 3 | +Data Atmosphere (DATM) |
| 4 | +====================== |
| 5 | + |
| 6 | +DATM is normally used to provide observational forcing data (or forcing data produced by a previous run using active components) to drive prognostic components. |
| 7 | +In the case of CESM, these would be: CLM (I compset), POP2 (C compset), and POP2/CICE (G compset). |
| 8 | +As a result, DATM variable settings are specific to the compset that will be targeted. |
| 9 | +As examples, CORE2_NYF (CORE2 normal year forcing) is the DATM mode used in C and G compsets. |
| 10 | +CLM_QIAN, CLMCRUNCEP, CLMGSWP3 and CLM1PT are DATM modes using observational data for forcing CLM in I compsets. |
| 11 | + |
| 12 | +.. _datm-xml-vars: |
| 13 | + |
| 14 | +------------------ |
| 15 | +xml variables |
| 16 | +------------------ |
| 17 | +The following are ``$CASEROOT`` xml variables that CIME supports for DATM. |
| 18 | +These variables are defined in ``$CIMEROOT/src/components/data_comps/datm/cime_config/config_component.xml``. |
| 19 | +These variables will appear in ``env_run.xml`` and the resulting values are compset dependent. |
| 20 | + |
| 21 | +.. note:: These xml variables are used by the the datm's **cime_config/buildnml** script in conjunction with datm's **cime_config/namelist_definition_datm.xml** file to generate the namelist file ``datm_in``. |
| 22 | + |
| 23 | +.. csv-table:: "DATM xml variables" |
| 24 | + :header: "xml variable", "description" |
| 25 | + :widths: 20, 80 |
| 26 | + |
| 27 | + "DATM_MODE", "Mode for atmospheric component" |
| 28 | + "", "Valid values are: CORE2_NYF,CORE2_IAF,CLM_QIAN,CLM_QIAN_WISO,CLM1PT,CLMCRUNCEP," |
| 29 | + "", "CLMCRUNCEP_V5,CLMGSWP3,WW3,CPLHISTForcing" |
| 30 | + "DATM_PRESAERO", "Prescribed aerosol forcing, if any" |
| 31 | + "DATM_TOPO", "Surface topography" |
| 32 | + "DATM_CO2_TSERIES", "CO2 time series type" |
| 33 | + "DATM_CPLHIST_CASE", "Coupler history data mode case name" |
| 34 | + "DATM_CPLHIST_DIR", "Coupler history data mode directory containing coupler history data" |
| 35 | + "DATM_CPLHIST_YR_ALIGN", "Coupler history data model simulation year corresponding to data starting year" |
| 36 | + "DATM_CPLHIST_YR_START", "Coupler history data model starting year to loop data over" |
| 37 | + "DATM_CPLHIST_YR_END", "Coupler history data model ending year to loop data over" |
| 38 | + "DATM_CLMNCEP_YR_ALIGN", "I compsets only - simulation year corresponding to data starting year" |
| 39 | + "DATM_CPLHIST_YR_START", "I compsets only - data model starting year to loop data over" |
| 40 | + "DATM_CPLHIST_YR_END", "I compsets only - data model ending year to loop data over" |
| 41 | + |
| 42 | +.. _datm-datamodes: |
| 43 | + |
| 44 | +-------------------- |
| 45 | +datamode values |
| 46 | +-------------------- |
| 47 | + |
| 48 | +The xml variable ``DATM_MODE`` sets the streams that are associated with DATM and also sets the namelist variable ``datamode`` that specifies what additional operations need to be done by DATM on the streams before returning to the driver. |
| 49 | +One of the variables in ``shr_strdata_nml`` is ``datamode``, whose value is a character string. Each data model has a unique set of ``datamode`` values that it supports. |
| 50 | +The valid values for ``datamode`` are set in the file ``namelist_definition_datm.xml`` using the xml variable ``DATM_MODE`` in the ``config_component.xml`` file for DATM. |
| 51 | +CIME will generate a value ``datamode`` that is compset dependent. |
| 52 | + |
| 53 | +The following are the supported DATM datamode values and their relationship to the ``$DATM_MODE`` xml variable value. |
| 54 | + |
| 55 | +.. csv-table:: "Valid values for datamode namelist variable" |
| 56 | + :header: "datamode variable", "description" |
| 57 | + :widths: 20, 80 |
| 58 | + |
| 59 | + "NULL", "This mode turns off the data model as a provider of data to the coupler. The ``atm_present`` flag will be set to ``false`` and the coupler assumes no exchange of data to or from the data model." |
| 60 | + "COPYALL", "The default science mode of the data model is the COPYALL mode. This mode will examine the fields found in all input data streams, if any input field names match the field names used internally, they are copied into the export array and passed directly to the coupler without any special user code. Any required fields not found on an input stream will be set to zero except for aerosol deposition fields which will be set to a special value. " |
| 61 | + "CPLHIST","Uilize user-generated coupler history data to spin up prognostic component. Works exactly like COPYALL." |
| 62 | + "CLMNCEP", "In conjunction with NCEP climatological atmosphere data, provides the atmosphere forcing favored by the Land Model Working Group when coupling an active land model with observed atmospheric forcing. This mode replicates code previously found in CLM (circa 2005), before the LMWG started using the CCSM flux coupler and data models to do active-land-only simulations." |
| 63 | + "CORE2_NYF", "Coordinated Ocean-ice Reference Experiments (CORE) Version 2 Normal Year Forcing." |
| 64 | + "CORE2_IAF", "In conjunction with with CORE Version 2 atmospheric forcing data, provides the atmosphere forcing favored by the Ocean Model Working Group when coupling an active ocean model with observed atmospheric forcing. This mode and associated data sets implement the CORE-IAF Version 2 forcing data, as developed by Large and Yeager (2008) at NCAR. Note that CORE2_NYF and CORE2_IAF work exactly the same way." |
| 65 | + |
| 66 | +------------------------------- |
| 67 | +DATM_MODE, datamode and streams |
| 68 | +------------------------------- |
| 69 | + |
| 70 | +The following tabe describes the valid values of ``DATM_MODE``, and how it relates to the associated input streams and the ``datamode`` namelist variable. |
| 71 | + |
| 72 | +.. csv-table:: "Relationship between DATM_MODE, datamode and streams" |
| 73 | + :header: "DATM_MODE", "description-streams-datamode" |
| 74 | + :widths: 15, 85 |
| 75 | + |
| 76 | + "NULL", "null mode" |
| 77 | + "", "streams: none" |
| 78 | + "", "datamode: NULL" |
| 79 | + "CORE2_NYF","CORE2 normal year forcing (C ang G compsets)" |
| 80 | + "", "streams: CORE2_NYF.GISS,CORE2_NYF.GXGXS,CORE2_NYF.NCEP" |
| 81 | + "", "datamode: CORE2_NYF" |
| 82 | + "CORE2_IAF","CORE2 interannual year forcing (C ang G compsets)" |
| 83 | + "", "streams: CORE2_IAF.GCGCS.PREC,CORE2_IAF.GISS.LWDN,CORE2_IAF.GISS.SWDN,CORE2_IAF.GISS.SWUP," |
| 84 | + "", "CORE2_IAF.NCEP.DN10,CORE2_IAF.NCEP.Q_10,CORE2_IAF.NCEP.SLP_,CORE2_IAF.NCEP.T_10,CORE2_IAF.NCEP.U_10," |
| 85 | + "", "CORE2_IAF.NCEP.V_10,CORE2_IAF.CORE2.ArcFactor" |
| 86 | + "", "datamode: CORE2_IAF" |
| 87 | + "CLM_QIAN_WISO","QIAN atm input data with water isotopes (I compsets)" |
| 88 | + "", "streams: CLM_QIAN_WISO.Solar,CLM_QIAN_WISO.Precip,CLM_QIAN_WISO.TPQW" |
| 89 | + "", "datamode: CLMNCEP" |
| 90 | + "CLM_QIAN", "QIAN atm input data (I compsets)" |
| 91 | + "", "streams: CLM_QIAN.Solar,CLM_QIAN.Precip,CLM_QIAN.TPQW" |
| 92 | + "", "datamode: CLMNCEP" |
| 93 | + "CLMCRUNCEP","CRUNCEP atm input data (I compsets)" |
| 94 | + "", "streams: CLMCRUNCEP.Solar,CLMCRUNCEP.Precip,CLMCRUNCEP.TPQW" |
| 95 | + "", "datamode: CLMNCEP" |
| 96 | + "CLMCRUNCEP_V5","CRUNCEP atm input data (I compsets)" |
| 97 | + "","streams: CLMCRUNCEP_V5.Solar,CLMCRUNCEP_V5.Precip,CLMCRUNCEP_V5.TPQW" |
| 98 | + "","datamode: CLMNCEP" |
| 99 | + "CLMGSWP3","GSWP3 atm input data (I compsets)" |
| 100 | + "","streams: CLMGSWP3.Solar,CLMGSWP3.Precip,CLMGSWP3.TPQW" |
| 101 | + "","datamode: CLMNCEP" |
| 102 | + "CLM1PT", "single point tower site atm input data" |
| 103 | + "","streams: CLM1PT.$ATM_GRID" |
| 104 | + "","datamode: CLMNCEP" |
| 105 | + "CPLHISTForcing","user generated forcing data to spinup for I and G compsets" |
| 106 | + "","streams: CPLHISTForcingForOcnIce.Solar,CPLHISTForcingForOcnIce.nonSolarFlux," |
| 107 | + "","CPLHISTForcingForOcnIce.State3hr,CPLHISTForcingForOcnIce.State1hr" |
| 108 | + "","datamode: CPLHIST" |
| 109 | + "WW3","WW3 wave watch data from a short period of hi WW3 wave watch data from a short period of hi temporal frequency COREv2 data" |
| 110 | + "","streams: WW3" |
| 111 | + "","datamode: COPYALL" |
| 112 | + |
| 113 | +-------------- |
| 114 | +Namelists |
| 115 | +-------------- |
| 116 | + |
| 117 | +The DATM namelist file is ``datm_in`` (or ``datm_in_NNN`` for multiple instances). DATM namelists can be separated into two groups: *stream-independent* namelist variables that are specific to the DATM model and *stream-specific* namelist variables whose names are common to all the data models. |
| 118 | + |
| 119 | +Stream dependent input is in the namelist group ``"shr_strdata_nml`` which is discussed in :ref:`input streams <input-streams>` and is the same for all data models. |
| 120 | + |
| 121 | +.. _datm-stream-independent-namelists: |
| 122 | + |
| 123 | +The stream-independent group is ``datm_nml`` and the DATM stream-independent namelist variables are: |
| 124 | + |
| 125 | +===================== ============================================================================================= |
| 126 | +datm_nml vars description |
| 127 | +===================== ============================================================================================= |
| 128 | +decomp decomposition strategy (1d, root) |
| 129 | + |
| 130 | + 1d => vector decomposition, root => run on master task |
| 131 | +restfilm master restart filename |
| 132 | +restfils stream restart filename |
| 133 | +force_prognostic_true TRUE => force prognostic behavior |
| 134 | +bias_correct if set, include bias correction streams in namelist |
| 135 | +anomaly_forcing if set, includ anomaly forcing streams in namelist |
| 136 | +factorfn filename containing correction factors for use in CORE2 modes (CORE2_IAF and CORE2_NYF) |
| 137 | +presaero if true, prescribed aerosols are sent from datm |
| 138 | +iradsw frequency to update radiation in number of time steps (of hours if negative) |
| 139 | +wiso_datm if true, turn on water isotopes |
| 140 | +===================== ============================================================================================= |
| 141 | + |
| 142 | +.. _datm-mode-independent-streams: |
| 143 | + |
| 144 | +------------------------------------------ |
| 145 | +Streams independent of DATM_MODE value |
| 146 | +------------------------------------------ |
| 147 | + |
| 148 | +In general, each ``DATM_MODE`` xml variable is identified with a unique set of streams. |
| 149 | +However, there are several streams in DATM that can accompany any ``DATM_MODE`` setting. |
| 150 | +Currently, these are streams associated with prescribed aerosols, co2 time series, topography, anomoly forcing and bias correction. |
| 151 | +These mode-independent streams are activated different, depending on the stream. |
| 152 | + |
| 153 | +- ``prescribed aerosol stream:`` |
| 154 | + To add this stream, set ``$DATM_PRESAERO`` to a supported value other than ``none``. |
| 155 | + |
| 156 | +- ``co2 time series stream``: |
| 157 | + To add this stream, set ``$DATM_CO2_TSERIES`` to a supported value other than ``none``. |
| 158 | + |
| 159 | +- ``topo stream``: |
| 160 | + To add this stream, set ``$DATM_TOPO`` to a supported value other than ``none``. |
| 161 | + |
| 162 | +- ``anomaly forcing stream:`` |
| 163 | + To add this stream, you need to add any of the following keywword/value pair to the end of ``user_nl_datm``: |
| 164 | + :: |
| 165 | + |
| 166 | + Anomaly.Forcing.Precip = <filename> |
| 167 | + Anomaly.Forcing.Temperature = <filename> |
| 168 | + Anomaly.Forcing.Pressure = <filename> |
| 169 | + Anomaly.Forcing.Humidity = <filename> |
| 170 | + Anomaly.Forcing.Uwind = <filename> |
| 171 | + Anomaly.Forcing.Vwind = <filename> |
| 172 | + Anomaly.Forcing.Shortwave = <filename> |
| 173 | + Anomaly.Forcing.Longwave = <filename> |
| 174 | + |
| 175 | +- ``bias_correct stream:`` |
| 176 | + To add this stream, you need to add any of the following keywword/value pair to the end of ``user_nl_datm``: |
| 177 | + :: |
| 178 | + |
| 179 | + BC.QIAN.CMAP.Precip = <filename> |
| 180 | + BC.QIAN.GPCP.Precip = <filename> |
| 181 | + BC.CRUNCEP.CMAP.Precip = <filename> |
| 182 | + BC.CRUNCEP.GPCP.Precip = <filename> |
| 183 | + |
| 184 | +.. _datm-fields: |
| 185 | + |
| 186 | +---------------- |
| 187 | +DATM Field names |
| 188 | +---------------- |
| 189 | + |
| 190 | +DATM defines a set of pre-defined internal field names as well as mappings for how those field names map to the fields sent to the coupler. |
| 191 | +In general, the stream input file should translate the stream input variable names into the ``datm_fld`` names for use within the data atmosphere model. |
| 192 | + |
| 193 | +.. csv-table:: "DATM internal field names" |
| 194 | + :header: "datm_fld (avifld)", "driver_fld (avofld)" |
| 195 | + :widths: 30, 30 |
| 196 | + |
| 197 | + "z", "Sa_z" |
| 198 | + "topo", "Sa_topo" |
| 199 | + "u", "Sa_u" |
| 200 | + "v", "Sa_v" |
| 201 | + "tbot", "Sa_tbot" |
| 202 | + "ptem", "Sa_ptem" |
| 203 | + "shum", "Sa_shum" |
| 204 | + "dens", "Sa_dens" |
| 205 | + "pbot", "Sa_pbot" |
| 206 | + "pslv", "Sa_pslv" |
| 207 | + "lwdn", "Faxa_lwdn" |
| 208 | + "rainc", "Faxa_rainc" |
| 209 | + "rainl", "Faxa_rainl" |
| 210 | + "snowc", "Faxa_snowc" |
| 211 | + "snowl", "Faxa_snowl" |
| 212 | + "swndr", "Faxa_swndr" |
| 213 | + "swvdr", "Faxa_swvdr" |
| 214 | + "swndf", "Faxa_swndf" |
| 215 | + "swvdf", "Faxa_swvdf" |
| 216 | + "swnet", "Faxa_swnet" |
| 217 | + "co2prog", "Sa_co2prog" |
| 218 | + "co2diag", "Sa_co2diag" |
| 219 | + "bcphidry", "Faxa_bcphidry" |
| 220 | + "bcphodry", "Faxa_bcphodry" |
| 221 | + "bcphiwet", "Faxa_bcphiwet" |
| 222 | + "ocphidry", "Faxa_ocphidry" |
| 223 | + "ocphodry", "Faxa_ocphodry" |
| 224 | + "ocphiwet", "Faxa_ocphiwet" |
| 225 | + "dstwet1", "Faxa_dstwet1" |
| 226 | + "dstwet2", "Faxa_dstwet2" |
| 227 | + "dstwet3", "Faxa_dstwet3" |
| 228 | + "dstwet4", "Faxa_dstwet4" |
| 229 | + "dstdry1", "Faxa_dstdry1" |
| 230 | + "dstdry2", "Faxa_dstdry2" |
| 231 | + "dstdry3", "Faxa_dstdry3" |
| 232 | + "dstdry4", "Faxa_dstdry4" |
| 233 | + "tref", "Sx_tref" |
| 234 | + "qref", "Sx_qref" |
| 235 | + "avsdr", "Sx_avsdr" |
| 236 | + "anidr", "Sx_anidr" |
| 237 | + "avsdf", "Sx_avsdf" |
| 238 | + "anidf", "Sx_anidf" |
| 239 | + "ts", "Sx_t" |
| 240 | + "to", "So_t" |
| 241 | + "snowhl", "Sl_snowh" |
| 242 | + "lfrac", "Sf_lfrac" |
| 243 | + "ifrac", "Sf_ifrac" |
| 244 | + "ofrac", "Sf_ofrac" |
| 245 | + "taux", "Faxx_taux" |
| 246 | + "tauy", "Faxx_tauy" |
| 247 | + "lat", "Faxx_lat" |
| 248 | + "sen", "Faxx_sen" |
| 249 | + "lwup", "Faxx_lwup" |
| 250 | + "evap", "Faxx_evap" |
| 251 | + "co2lnd", "Fall_fco2_lnd" |
| 252 | + "co2ocn", "Faoo_fco2_ocn" |
| 253 | + "dms", "Faoo_fdms_ocn" |
| 254 | + "precsf", "Sa_precsf" |
| 255 | + "prec_af", "Sa_prec_af" |
| 256 | + "u_af", "Sa_u_af" |
| 257 | + "v_af", "Sa_v_af" |
| 258 | + "tbot_af", "Sa_tbot_af" |
| 259 | + "pbot_af", "Sa_pbot_af" |
| 260 | + "shum_af", "Sa_shum_af" |
| 261 | + "swdn_af", "Sa_swdn_af" |
| 262 | + "lwdn_af", "Sa_lwdn_af" |
| 263 | + "rainc_18O", "Faxa_rainc_18O" |
| 264 | + "rainc_HDO", "Faxa_rainc_HDO" |
| 265 | + "rainl_18O", "Faxa_rainl_18O" |
| 266 | + "rainl_HDO", "Faxa_rainl_HDO" |
| 267 | + "snowc_18O", "Faxa_snowc_18O" |
| 268 | + "snowc_HDO", "Faxa_snowc_HDO" |
| 269 | + "snowl_18O", "Faxa_snowl_18O" |
| 270 | + "snowl_HDO", "Faxa_snowl_HDO" |
| 271 | + "shum_16O", "Sa_shum_16O" |
| 272 | + "shum_18O", "Sa_shum_18O" |
| 273 | + |
| 274 | + |
| 275 | + |
| 276 | + |
0 commit comments