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

Add new aci and aerosol activation metrics from ARM Diags v3 #679

Merged
merged 11 commits into from
May 23, 2023

Conversation

chengzhuzhang
Copy link
Contributor

@chengzhuzhang chengzhuzhang commented Mar 17, 2023

This PR is to update the ARM diagnostics data and modules (released in ARM Diags v3) by including the aerosol cloud interaction (aci) and aerosol activation diagnostics and metrics based on ARM observation, developed by Xiaojian Zheng @lannyzxj and Cheng Tao @EmmyChengTao.

Todo list:

  • add new E3SM variables required for new sets in pre-processing.
  • updates the original model to work with ARM Diags v3 data
  • add new module for aci
  • add new module for aerosol activation
  • upload data to lcrc diagnostics folder

@chengzhuzhang
Copy link
Contributor Author

Hi Xiaojian @lannyzxj and Cheng@EmmyChengTao
I have implemented the v3 updates of ARM diags in E3SM Diags. Below is the newly added diagnostics running with the v3 smoke test. The results only show available variables from the simulation output. One thing I'm not sure about is the units conversion for so4 mass concentration. I will add some comments in the code and tag you. Let me know if you see any problem in the plots. Thank you.

https://portal.nersc.gov/cfs/e3sm/zhang40/tests/arm_diags_v3_m2o_aerosol_act/viewer/arm_diags/index.html

@chengzhuzhang chengzhuzhang marked this pull request as ready for review April 18, 2023 19:40

def so4_mass_sum(var):
# Calculate: SO4 mass conc. (ng/m3) (< 1um)
var = var * AIR_DENS * 1e9
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lannyzxj Xiaojian,this formula converts so4 mass conc. from (kg/kg) to ug/m3 which gives comparable results to models. But in your version, the results are in ug/cm3. I might get something wrong here..would you help me double check.

Copy link

@lannyzxj lannyzxj Apr 18, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dear Dr. Zhang @chengzhuzhang ,

Thanks for letting me know. I have cross-compared your plots and mine offline, the plots look good.
My units are also ug/m3 for the sulfate output in my plot, which looks comparable to yours.

I double-checked my processing code for the model so4,

it was first converted to ng/m3 after reading the data:
"
iso4_Acc_tmp= iso4_Acc_tmp * 1e12 * 1.225 #kg/kg to ng/kg then to ng/m3
"

and then further divided by 1000 in order to convert to ug/m3 in the data output part of the code:
"
#SO4
ivar=np.reshape(so4_all,(numday*24),order='C')
ivar=ivar/1000. #convert to ug/m3
Mvar=MV2.masked_array(ivar,mask=[np.isnan(ivar)],fill_value=-9999.)
Mvar.id="sulfate"
Mvar.long_name='Sulfate (<1um) Mass Conc.'
Mvar.units='ug/m3'
Mvar.missing_value=-9999.
Mvar.setAxis(0,hrtime_axes)
fout.write(Mvar)
"
The above processes should be equivalent to your "var = var * AIR_DENS * 1e9".

Would you point me to where my version states the unit as ug/cm3? That could be a typo in stating the unit, the actual calculation should indeed yield ug/m3.

Best,
Xiaojian

Copy link
Contributor Author

@chengzhuzhang chengzhuzhang Apr 18, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your prompt reply! I missed the second units conversion step in your script when writing out files! It is good to know that our results are consistent.
I was looking at a version of ppt for ARM diags v3(for verification purpose), which includes aerosol diurnal cycle plots that has units in ug/cm3, which could be a typo. And I also confirmed that the ARM Diags standalone run provide the correct units!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to know that! Thank you!

"so4_mass": OrderedDict(
[
(("sulfate",), rename),
# Aerosol concentration from Aitken, Accumu., and Coarse mode
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: this only takes Aitken and Accumu. mode. remove Coarse in the comment

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lannyzxj Cheng and I are working on clearing up some documentation in preparation for E3SM Tutorial. When working on ARM Diags, I noticed that when computing so4 mass concentration, only Aitken and Accumu. mode are taking account. Could you remind me why is the case? Is it to make the model data comparable to obs?

@chengzhuzhang
Copy link
Contributor Author

Some updates in ARM-DOE/arm-gcm-diagnostics#29 will be included at a later time after ARM D release v3.1.

I also made some changes in the v3.0 datasets regarding to properly set time bounds. I will share the data to @lannyzxj and @EmmyChengTao for potentially considering releasing a new version of the data.

@chengzhuzhang
Copy link
Contributor Author

Reference runs:
Results from e3sm diags with arm diags v3 (compare against v3 NGD smoke test)
Results from e3sm diags with arm diags v2 (compare against an earlier run)

@chengzhuzhang
Copy link
Contributor Author

chengzhuzhang commented May 23, 2023

@EmmyChengTao and @lannyzxj thank you for working on releasing v3.1 of ARM Diags data. I tested with E3SM Diags and both the time bounds problem and inconsistency in convection onset metrics are resolved! Thank you.

I'm just documenting the results here:
Results from e3sm diags with arm diags v3.1 (compare against v3 NGD smoke test)

VS

Reference runs:
Results from e3sm diags with arm diags v3 (compare against v3 NGD smoke test)
Results from e3sm diags with arm diags v2 (compare against an earlier run)

@EmmyChengTao
Copy link

EmmyChengTao commented May 23, 2023 via email

@chengzhuzhang chengzhuzhang merged commit 9407ac6 into main May 23, 2023
@chengzhuzhang chengzhuzhang deleted the arm_diags_v3 branch May 23, 2023 23:32
@chengzhuzhang
Copy link
Contributor Author

CI/CD tests were fixed by updated input data for integration tests. ARM data on LCRC also updated.

@chengzhuzhang
Copy link
Contributor Author

Thank you for the check, Chengzhu! I will work on the release of this v3.1 data. Will keep you updated. Best, Cheng

Thank you!

@lannyzxj
Copy link

lannyzxj commented Mar 26, 2024 via email

@chengzhuzhang
Copy link
Contributor Author

Hi Jill, Yes, the ARM observation only accounts PM1 for the chemical components, so I use the closest representation in the model for comparison purposes. Best, Xiaojian

On Tue, Mar 26, 2024 at 11:48 Jill Chengzhu Zhang @.> wrote: @.* commented on this pull request. ------------------------------ In e3sm_diags/derivations/acme.py <#679 (comment)> : > + # Aerosol concentration from Aitken, Accumu., and Coarse mode + ( + ( + "num_a1", + "num_a2", + "num_a3", + ), + lambda a1, a2, a3: a_num_sum(a1 + a2 + a3), + ), + ] + ), + # total so4 mass concentration (ng/m3) + "so4_mass": OrderedDict( + [ + (("sulfate",), rename), + # Aerosol concentration from Aitken, Accumu., and Coarse mode @lannyzxj https://github.com/lannyzxj Cheng and I are working on clearing up some documentation in preparation for E3SM Tutorial. When working on ARM Diags, I noticed that when computing so4 mass concentration, only Aitken and Accumu. mode are taking account. Could you remind me why is the case? Is it to make the model data comparable to obs? — Reply to this email directly, view it on GitHub <#679 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AONPBWW6ZWIAAXCZ43DLAHDY2GRE5AVCNFSM6AAAAAAV7DDSEOVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMYTSNRRGEYTQMRZGI . You are receiving this because you were mentioned.Message ID: @.***>

Thank you for confirming, Xiaojian!

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

Successfully merging this pull request may close these issues.

3 participants