Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CCSM_CO2_PPMV logic issues #863

Closed
jedwards4b opened this issue Nov 30, 2016 · 6 comments
Closed

CCSM_CO2_PPMV logic issues #863

jedwards4b opened this issue Nov 30, 2016 · 6 comments
Assignees

Comments

@jedwards4b
Copy link
Contributor

From CESM_DEVELOPMENT issue 121

There are some problems with CCSM_CO2_PPMV as it stands now:

It apparently doesn't do anything for many CLM/CAM compsets, or for any compsets without CLM. For transient runs, the CO2 isn't constant, regardless of configuration. For runs using BGC BPRP/BDRD, WACCM, or some CAM-CHEM compsets, the model chemistry is producing non-constant CO2 concentrations, and there is also typically some time/space varying boundary condition for concentrations or emissions at the surface. It is potentially confusing that we have this switch that looks very important, but often does nothing.

Note that some compsets actually set CCSM_CO2_PPMV to some tiny value to try to get the model to crash or do something crazy if CLM tries to actually use this value. However, besides being just one more hack that can confuse new users, this has some mixed results.

For instance, my recollection is that CESM 1.1.0 had exactly the kind of bug that the unrealistic CO2 value was intended to prevent, accidentally using -co2_type constant for a CAM compset. Indeed, the low value of CO2 was noticed by Mike Mills. However, this didn't happen until shortly after the release, which forced us to do an "emergency" CESM 1.1.1 release immediately afterward. If we still need to check for this error (which seems much less likely to happen in the current scripts), we should use a guard that will actually cause an automated test to fail, rather than requiring a human to notice that a bug is producing unrealistic output.

It's not actually necessary to coordinate this value between CAM and CLM. If CAM is on, CLM never uses -co2_type constant, and therefore CCSM_CO2_PPMV is ignored by CLM. If CAM is off, there is no possibility of having an inconsistent CO2 value between components. We still need CLM_CO2_TYPE to be set in the CIME scripts, because it has a different value based on whether or not CAM is on, but the actual CO2 concentration can be defined by the CAM/CLM use cases, without setting it at the CIME level.

In fact, CAM already sets the CO2 concentration in some use cases, but this is overridden by CIME, which is another potential source of confusion. Again, we have settings that look important, but are not actually used, except in CAM standalone builds. See, e.g., the discussion in #108.

If we remove CCSM_CO2_PPMV and just set the value in CAM/CLM use cases, the only real issue is that some CLM climatological runs could potentially drift from their CAM counterparts (e.g. I1850 runs could accidentally use a different value than F1850 for CO2). This does not seem too high a risk (especially since these values are changed so rarely), but it is present.

Note also that Erik proposed that DATM set this value for I compsets, rather than a CLM use case. It's not clear to me that either approach is superior. This value is used by CLM itself, not DATM, however, if a CLM use case is used, it may not be obvious to CLM users that the value in the use case is ignored when CAM is on. So it could be good to have the atmosphere component always be the one providing a value (even for data models).

There are a some little silly issues with the implementation that we wouldn't have to address if this variable just goes away. For instance, the outdated CCSM prefix, and the fact that you can't use scientific notation in the value (at least for CAM).

CC @ekluzek @brian-eaton @billsacks

I am marking this as a backwards compatibility issue, because the current {cam,clm}.buildnml scripts won't work properly without CCSM_CO2_PPMV defined, and because we don't want the components to start ignoring this variable until it's time to actually remove it. (Otherwise, some scientist using a beta tag might try to rely on this variable, unaware that it no longer does anything.)

@klindsay28
Copy link
Collaborator

Actually, CCSM_CO2_PPMV does get used in compsets without clm. It is used by POP's build-namelist script to set defaults for different POP namelist variables. Please take into consideration if this variable is to be altered.

@rljacob rljacob changed the title CCSM_CO2_PPMV logic issues CCSM_CO2_PPMV logic issues Jan 27, 2017
@rljacob rljacob added the ready label Jan 27, 2017
rljacob pushed a commit that referenced this issue Feb 8, 2017
Merged tuning changes from FC5AV1C-02 into F1850C5AV1C-01.
Also added F1850C5AV1C-L to duplicate F1850C5AV1C-02.

config_compsets.xml   :  Added F1850C5AV1C-02 and F1850C5AV1C-L compsets.
1850_cam5_av1c-01.xml :  Roerganized lines to better match 2000_cam5_av1c-02.xml
                         Fixed a couple of typos (no apparent impact)
1850_cam5_av1c-02.xml :  Merged in tuning options from 2000_cam5_av1c-02.xml

NOTE: Two namelist variables were added in the PR for the 2000 compset (#863).
      Those changes are not included in this commit (and are not yet on master).
      They will be added in a subsequent commit to keep the provenance cleaner.

[FCC] [AG-416]
rljacob pushed a commit that referenced this issue Feb 8, 2017
Merged changes from PR(#863) to make two variables into namelist parameters:
   so4_sz_thresh_icenuc, n_so4_monolayers_pcage

The changes were made to the following files
   components/cam/bld/build-namelist
   components/cam/bld/namelist_files/namelist_defaults_cam.xml
   components/cam/bld/namelist_files/namelist_definition.xml
   components/cam/src/chemistry/modal_aero/modal_aero_amicphys.F90
   components/cam/src/chemistry/modal_aero/modal_aero_initialize_data.F90
   components/cam/src/physics/cam/nucleate_ice_cam.F90
   components/cam/src/physics/cam/phys_control.F90

[BFB] [AG-416]
rljacob pushed a commit that referenced this issue Feb 8, 2017
This PR implements FC5AV1C-02 compset. Following are the namelist
variables which differ in FC5AV1C-02 from FC5AV1C-01:

sscav_tuning = .false.
cldfrc_dp1 = 0.04
zmconv_c0_lnd = 0.01
zmconv_c0_ocn = 0.007
seasalt_emis_scale = 0.7
dust_emis_fact = 2.05
clubb_gamma_coef = 0.25
clubb_C8 = 5.2
cldfrc2m_rhmaxi = 1.1D0
clubb_c_K10 = 0.4
effgw_beres = 0.4
do_tms = .false.
mam_mom_mixing_state = 3
so4_sz_thresh_icenuc = 0.01e-6
n_so4_monolayers_pcage =8.0D0

Note that so4_sz_thresh_icenuc (ice nucleation SO2 size threshold for
aitken mode) and n_so4_monolayers_pcage ( number of so4(+nh4)
monolayers needed to "age" a carbon particle) are new namelist
parameters. These parameters already existed in the model, but
previously could not be provided via namelist.

FC5AV1C-02 is based on the vb25 experiment by Po-Lun Ma. The only
difference between vb25 and this compset is the mom mixing state. In
vb25, mom mixing state is 2 but in this new compset, it is 3.

[BFB]
[NML]
rljacob pushed a commit that referenced this issue Feb 8, 2017
Merge tuning changes from FC5AV1C-02 into F1850C5AV1C-01.
Also add F1850C5AV1C-L to duplicate F1850C5AV1C-02.

config_compsets.xml : Added F1850C5AV1C-02 and F1850C5AV1C-L compsets.
1850_cam5_av1c-01.xml : Reorganized lines to better match 2000_cam5_av1c-02.xml
Fixed a couple of typos (no apparent impact)
1850_cam5_av1c-02.xml : Merged in tuning options from 2000_cam5_av1c-02.xml

NOTE: Two namelist variables were added in the PR for the 2000 compset
(#863) and are also added in this PR because they are needed in the
new 1850 compset.

[FCC]
[BFB]

AG-416
@rljacob
Copy link
Member

rljacob commented Apr 7, 2017

This has been fixed.

@rljacob rljacob closed this as completed Apr 7, 2017
@ghost ghost removed the ready label Apr 7, 2017
@mvertens
Copy link
Contributor

mvertens commented Apr 8, 2017 via email

@mvertens
Copy link
Contributor

mvertens commented Apr 8, 2017 via email

@rljacob rljacob reopened this Apr 8, 2017
@rljacob
Copy link
Member

rljacob commented Apr 8, 2017

There was some change you made to CO2 values in config_components that we were thinking of. Sorry to get it mixed up.

@mvertens
Copy link
Contributor

mvertens commented Apr 8, 2017 via email

@rljacob rljacob added the ready label Apr 8, 2017
@ghost ghost added in progress and removed ready labels May 7, 2017
@ghost ghost removed the in progress label May 8, 2017
mnlevy1981 added a commit that referenced this issue May 8, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants