E3SM-Project / E3SM

Energy Exascale Earth System Model source code. NOTE: use "maint" branches for your work. Head of master is not validated.
https://docs.e3sm.org/E3SM
Other
347 stars 354 forks source link

Aerosol diagnostic discrepancy: AEROD_v/EXTINCT account for prescribed volcanic aerosols, AODVIS does not. #4800

Open hbrown18 opened 2 years ago

hbrown18 commented 2 years ago

Hello,

I wanted to submit a comment regarding a discrepancy between aerosol diagnostic output in E3SMv2. The main concern is in regards to the variables AEROD_v, EXTINCT, and AODVIS. Aerosol optical depth (AOD) is initially calculated in the modal aerosol module as AODVIS (modal_aero_sw subroutine), which does not take into account prescribed volcanic aerosol in the stratosphere. A separate subroutine (aer_rad_props_sw) then calls this AOD value and overwrites stratospheric values with the prescribed volcanic aerosol, renaming it as AEROD_v. Furthermore, in the modal_aero_sw module, the aerosol extinction coefficient (EXTINCT) is updated to include prescribed volcanic aerosol. This means that AODVIS and EXTINCT, which are both output from the modal_aer_opt.F90, are not reporting the same atmospheric aerosol conditions.

The following figure shows a 1991 time series of AEROD_v, AODVIS, and AOD calculated offline by column integration of EXTINCT. Mt. Pinatubo erupted in early June which is represented by prescribed volcanic aerosol and is reflected in AEROD_v and AOD from EXTINCT, but not AODVIS.

Screen Shot 2022-02-17 at 3 36 18 PM

I'm not sure the best way to fix this. One possibility seems to be adding an EXTINCT term to the aer_rad_props_sw subroutine that calculates AEROD_v and calling it something different than EXTINCT (i.e., EXTINCT_v). However, prescribed volcanic aerosols, which are accounted for in the radiation model (as well as AEROD_v and EXTINCT), are not represented in other modal_aer_opt.F90 diagnostics which could lead to misinterpretation of aerosol optics model output.

singhbalwinder commented 2 years ago

Thanks @hbrown18 for reporting this. I will look into it. Tagging @hwangacme to know if he has any suggestions.

hwangacme commented 2 years ago

@hbrown18 @singhbalwinder AODVIS is the diagnostic variable we often use as the total aerosol optical depth (in the visible band) contributed by the actual aerosol species, including those originating from natural and anthropogenic sources, represented by the MAM4 scheme. Explosive volcanic emissions are prescribed into the simulations directly as extinction coefficient. I assume that EXTINCT is the variable used by radiation schemes that need to consider both MAM4 aerosols and the explosive volcanic aerosol forcing. AEROD_v is more comparable to other models or satellite retrievals that include contribution from volcanic aerosols.

hbrown18 commented 2 years ago

Thanks @hwangacme. I see what you are saying about AEROD_v. I don't think EXTINCT is used in the radiation scheme. I'm pretty sure that the radiation scheme uses AOD (tau) passed from the aer_rad_props.F90 module. My main concern is that EXTINCT, which I have always assumed can be integrated to get AODVIS, will actually give you AEROD_v. This difference will be quite large in the presence of explosive volcanic eruptions. Maybe I am missing a purpose for the inclusion of explosive volcanic eruptions in the variable EXTINCT, but I am inclined to think that this should not be included in modal_aer_opt.F90.

hwangacme commented 2 years ago

@hbrown18 The tau used for radiation code should be different from any of these 2D diagnostic variables for AOD. It must have a tau value for each model layer, which comes from extinction coefficient and layer thickness. The extinction coefficient variable will have to include the prescribed contribution of volcanic eruptions.

hbrown18 commented 2 years ago

@hwangacme The radiation diagnostic tau value you mention is used in aer_rad_props.F90 to calculate AEROD_v and the other radiation diagnostics, but the EXTINCT variable (from modal_aer_opt.F90) does not have any connection to the layer resolved tau used by the radiation code. EXTINCT should represent only natural and anthropogenic aerosol extinction (based on its inclusion in modal_aer_opt.F90), but instead it is overwritten to include the stratospheric influence of prescribed volcanic aerosol forcing before being output by modal_aer_opt.F90. I think that this is the main inconsistency in the code.

hwangacme commented 2 years ago

@hbrown18 The discussions are all good. Diagnostic variables as such are defined by model developers or users for evaluation and research purposes. For example, if you need to evaluate clear-sky column extinction due to all types of aerosols (interactive or prescribed) against satellite retrievals that consider volcanic aerosols in the stratosphere, you would need to include the prescribed extinction for volcanic eruptions. When there is no existing one, you define your own, so nothing is wrong with that. A good practice would be to document it clearly :)

hbrown18 commented 2 years ago

Ok, sounds good @hwangacme. Thanks for the discussion!

rljacob commented 2 years ago

How can the variables be documented better? Metadata in the history file? Comments in the code? Change the names?

hwangacme commented 2 years ago

@rljacob In my opinion, probably both in the metadata (accurate longname of the variables) and comments in the code, but the metadata is more important, as users don't necessarily read the code.

hbrown18 commented 2 years ago

@rljacob I agree with @hwangacme. I think having an updated longname in the metadata would be the most helpful as the model output is the first place I look. One thought for AEROD_v could be something like "Total Aerosol Optical Depth in visible band including contributions from volcanic aerosol".

susburrows commented 1 year ago

FYI @mahf708

mahf708 commented 1 year ago

The coupled team is outputting AODALL currently, which seems to be identical to AODVIS; ~they're not outputting AODVIS~ EDIT: my bad AODVIS as well as AODALL are outputted in the coupled simulations. There's also a new AOD output for sulfate... I will try to look into this and see if I could help in better documentation. I tried to document the new diagnostic terms I added in #5774 with https://github.com/E3SM-Project/E3SM/pull/5774/commits/757e8918d1113d2c6056571966557099ef38198a. Also, marking this as "enhancement request" --- I don't believe it is a bug because, as Hailong explained above, developers often output diagnostic terms for different purposes. Better documentation is always great enhancement to any project 😸

hwangacme commented 1 year ago

@mahf708 Please make sure AODALL is indeed identical to AODVIS. There might be two potential traps: 1) Component AODs estimated from speciated mass distributions are not necessarily additive. 2) Some AODs are only estimated for daytime (and the visible band).

mahf708 commented 1 year ago

Thanks for the tips, @hwangacme. Will do! Hopefully early next week.

mahf708 commented 1 year ago

Hello everyone, I have confirmed that AODVIS and AODALL are not the same. See two plots for confirmation. Thanks @hwangacme for suggesting the test. This is something we should fix soon. I am not sure how much we should worry about it in previous simulations, but we definitely fix it asap.

First plot: the difference of AODALL-AODVIS of a monthly (h0) output from the branched historical simulation (v3alpha02_historical_0101) at 2020-03:

AODALL-AODVIS-2012-03-monthly

Second plot: the difference of AODALL-AODVIS for a 30-year climatology (from h0 output) between 1850 and 1879 from the branched historical simulation (v3alpha02_historical_0101):

AODALL-AODVIS-1850-1879-climo

I am copying @golaz and @wlin7 for awareness. After investigating this further (in the source code), I will make a recommendation based on what I learn. I will also split his into a specific "bug" issue to fix.

mahf708 commented 1 year ago

Investigating this a little further, I think AODALL and AODVIS may have been designed with this inconsistency in mind. Looking at the source code,

   call addfld ('AODVIS',horiz_only,    'A','  ','Aerosol optical depth 550 nm', flag_xyfill=.true., &
   standard_name='atmosphere_optical_thickness_due_to_ambient_aerosol_particles')
   call addfld ('AODALL',horiz_only,    'A','  ','AOD 550 nm for all time and species', flag_xyfill=.true.)

we see that AODVIS is described as "Aerosol optical depth 550 nm" while AODALL as "AOD 550 nm for all time and species" (emphasis mine). Perhaps "all time" here refers to including nighttime as well as daytime in the calculation. This happens to be the sole difference between AODVIS and AODALL in the code: AODVIS has a fillvalue for nighttime while AODALL retains its own value. (Nonetheless, there is bug with treating AODSS differently in the code, so I will keep the other issue, #5816, open and prepare a fix unless I hear from relevant developers for that being on purpose.)

Any thoughts on fixing this or leaving it as-is? It is obviously quite misleading! I would have expected AODALL and AODVIS to return the same value, especially that we have AODBC, AODBS, etc. indicating the likely meaning of "ALL" to mean the aerosol species (and not both aerosol species and times).