-
Notifications
You must be signed in to change notification settings - Fork 55
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
Adds MAM4xx: Aerosol Cloud Interactions (ACI) interface #2794
Adds MAM4xx: Aerosol Cloud Interactions (ACI) interface #2794
Conversation
Status Flag 'Pre-Test Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging |
components/eamxx/src/physics/shoc/disp/shoc_assign_2d_view_disp.cpp
Outdated
Show resolved
Hide resolved
b366be0
to
1a682f2
Compare
Great to see this come in, @singhbalwinder . Is it correct that this should be labeled as "stealth"? |
Yes, this feature is not invoked until we include |
@kaizhangpnl : I have added instructions to run a test with |
Status Flag 'Pre-Test Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging |
Thanks @singhbalwinder . I added the "Stealth" tag (it seems we didn't have that tag before). The description is clear and contains most of the requested information (with the note that some information, like timing data, will be added later). I am wondering if there are any meaningful evaluation plots that could be provided to help with understanding the behavior of this feature inside of EAMxx, similar to the AOD plots that were shared for the optics code? For example, perhaps the cloud-borne and interstitial aerosols could be compared with the cloudborne and interstitial aerosols in v2 to provide some sense of whether the behavior looks reasonably sane. I understand this might be challenging at this point, however, given that other key processes have not yet been implemented (e.g., wet/dry removal). |
One more question: are there any new input datasets required for this PR (e.g., to add hygroscopicity properties)? |
No, we didn't add any new datasets in this PR. We did add a new initial condition (IC) file for the unit tests. The old file had some missing values, so we added a new IC file. The new file has more realistic values directly from an E3SMv2 run with each column having a unique set of values. |
The evaluation process for the global simulations has just kicked off and we will be adding plots pretty soon of all meaningful evaluations we can do with this process. |
Thanks @singhbalwinder ! Based on the information in the current PR description and the comments, as well as our discussion in the EAMxx eval call this morning, I added the WIP tag to this PR. We discussed (and it's mentioned above) that there is some missing code that still needs to be added, as well as the timings and some basic sanity-test evaluation to demonstrate that the feature is functioning as expected at the process level. In the meantime, it would be great if @kaizhangpnl could start looking at the code and providing any relevant feedback from the aerosol modeling perspective. |
components/eamxx/src/physics/mam/eamxx_mam_aci_process_interface.cpp
Outdated
Show resolved
Hide resolved
components/eamxx/src/physics/mam/eamxx_mam_aci_process_interface.cpp
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The vertical diffusion of aerosol tracers and cloud droplet number needs to be treated with care. Vertically diffusion of (interstitial aerosols and cloud droplet number) tracers is supposed to be done in SHOC by default, but the "ndrop" routine will also diffuse the aerosol tracers and cloud droplet number as in MAM/E3SM. According to our discussion in the EAGLES MAMxx meeting, it's better to keep the vertical diffusion calculation (for interstitial aerosols and cloud droplet number) in "ndrop" and turn it off in SHOC for initial porting and testing. (Note that the vertical diffusion of cloud-borne aerosols is considered in "ndrop", but not in SHOC since cloud-borne aerosols are not in the tracer array). This needs to be addressed either in this PR or an additional PR.
The comments here are only for routines inside the scream repo. Note that there are external routines that are important for this PR. Not sure what is the best way to review/comment on these routines.
https://github.com/eagles-project/mam4xx/blob/main/src/mam4xx/ndrop.hpp
https://github.com/eagles-project/mam4xx/blob/main/src/mam4xx/hetfrz.hpp
components/eamxx/cime_config/testdefs/testmods_dirs/scream/mam4xx/aci/shell_commands
Show resolved
Hide resolved
components/eamxx/src/physics/shoc/disp/shoc_assign_2d_view_disp.cpp
Outdated
Show resolved
Hide resolved
components/eamxx/tests/multi-process/physics_only/mam/shoc_cldfrac_mam4_aci_p3/output.yaml
Show resolved
Hide resolved
components/eamxx/src/physics/mam/eamxx_mam_aci_process_interface.cpp
Outdated
Show resolved
Hide resolved
components/eamxx/src/physics/mam/eamxx_mam_aci_process_interface.cpp
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think there is at least one needed fix for a fcn called in a kernel. The other are suggestions/comments, which you should feel free to disagree with.
components/eamxx/src/physics/mam/eamxx_mam_aci_process_interface.hpp
Outdated
Show resolved
Hide resolved
components/eamxx/src/physics/mam/eamxx_mam_aci_process_interface.cpp
Outdated
Show resolved
Hide resolved
components/eamxx/src/physics/shoc/disp/shoc_assign_2d_view_disp.cpp
Outdated
Show resolved
Hide resolved
973cc87
to
62adc59
Compare
Status Flag 'Pull Request AutoTester' - User Requested Retest - Label AT: RETEST will be reset after testing. |
Status Flag 'Pull Request AutoTester' - Jenkins Testing: 1 or more Jobs FAILED Note: Testing will normally be attempted again in approx. 2 Hrs. If a change to the PR source branch occurs, the testing will be attempted again on next available autotester run. Pull Request Auto Testing has FAILED (click to expand)Build InformationTest Name: SCREAM_PullRequest_Autotester_Mappy
Jenkins Parameters
Build InformationTest Name: SCREAM_PullRequest_Autotester_Weaver
Jenkins Parameters
SCREAM_PullRequest_Autotester_Mappy # 5507 FAILED (click to see last 100 lines of console output)
SCREAM_PullRequest_Autotester_Weaver # 5783 FAILED (click to see last 100 lines of console output)
|
@kaizhangpnl @odiazib @tcclevenger @mahf708 @singhbalwinder |
Status Flag 'Pull Request AutoTester' - User Requested Retest - Label AT: RETEST will be reset after testing. |
Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects: Pull Request Auto Testing STARTING (click to expand)Build InformationTest Name: SCREAM_PullRequest_Autotester_Mappy
Jenkins Parameters
Build InformationTest Name: SCREAM_PullRequest_Autotester_Weaver
Jenkins Parameters
Using Repos:
Pull Request Author: singhbalwinder |
Yes, all my comments have been addressed. |
Status Flag 'Pull Request AutoTester' - Jenkins Testing: 1 or more Jobs FAILED Note: Testing will normally be attempted again in approx. 2 Hrs. If a change to the PR source branch occurs, the testing will be attempted again on next available autotester run. Pull Request Auto Testing has FAILED (click to expand)Build InformationTest Name: SCREAM_PullRequest_Autotester_Mappy
Jenkins Parameters
Build InformationTest Name: SCREAM_PullRequest_Autotester_Weaver
Jenkins Parameters
SCREAM_PullRequest_Autotester_Mappy # 5508 FAILED (click to see last 100 lines of console output)
SCREAM_PullRequest_Autotester_Weaver # 5784 FAILED (click to see last 100 lines of console output)
|
Status Flag 'Pull Request AutoTester' - User Requested Retest - Label AT: RETEST will be reset after testing. |
Status Flag 'Pre-Test Inspection' - SUCCESS: The last commit to this Pull Request has been INSPECTED by label AT: PRE-TEST INSPECTED! Autotester is Removing Label; this inspection will remain valid until a new commit to source branch is performed. |
Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects: Pull Request Auto Testing STARTING (click to expand)Build InformationTest Name: SCREAM_PullRequest_Autotester_Mappy
Jenkins Parameters
Build InformationTest Name: SCREAM_PullRequest_Autotester_Weaver
Jenkins Parameters
Using Repos:
Pull Request Author: singhbalwinder |
Status Flag 'Pull Request AutoTester' - Jenkins Testing: 1 or more Jobs FAILED Note: Testing will normally be attempted again in approx. 2 Hrs. If a change to the PR source branch occurs, the testing will be attempted again on next available autotester run. Pull Request Auto Testing has FAILED (click to expand)Build InformationTest Name: SCREAM_PullRequest_Autotester_Mappy
Jenkins Parameters
Build InformationTest Name: SCREAM_PullRequest_Autotester_Weaver
Jenkins Parameters
SCREAM_PullRequest_Autotester_Mappy # 5531 FAILED (click to see last 100 lines of console output)
SCREAM_PullRequest_Autotester_Weaver # 5801 FAILED (click to see last 100 lines of console output)
|
@overfelt has fixed the bug (and a lot of compiler warnings) and now we only have expected fails:
@AaronDonahue : Could you please help merge this? Thanks! |
This PR connects MAM4xx’s Aerosol Cloud Interactions (ACI) codes to EAMxx using an interface. Since the cmake option,
SCREAM_ENABLE_MAM
is alwaysON
, this code is always compiled with the EAMxx codebase. ACI is added as an EAMxx process with the ability to turn it on/off using the labelmam4_aci
in thenamelist_scream.xml
file. The atmchange command to invoke this process in a CIME simulation is:./atmchange mac_aero_mic::atm_procs_list="tms,shoc,cldFraction,mam4_aci,p3"
To set up a test with the above configuration, use the following commands:
Where,
<machine>
is the machine name<compiler>
is the compiler to use on the machine<test id >
is a unique string test identifier<project id>
is the allocation project to chargescream-mam4xx-aci
is the test modifier that addsmam4_aci
to themac_aero_mic
process list and increase the number of tracers to 41.ACI invokes the following sub-processes:
1. Ice nucleation
2. Droplet activation
3. Heterogeneous freezing
The output from the processes above is used by the P3 microphysics scheme:
1. Number of activated aerosol for ice nucleation[#/kg]
2. Tendency in droplet number mixing ratio [#/kg/s]
3. Heterogeneous freezing by immersion nucleation [cm^-3 s^-1]
4. Heterogeneous freezing by contact nucleation [cm^-3 s^-1]
5. Heterogeneous freezing by deposition nucleation [cm^-3 s^-1]
Other outputs:
Cloudborne and interstitial aerosols
ACI also needs input from the SHOC process, so a new code has been added to get those inputs from SHOC.
Testing
We added 1 single process, 4 multi process, and 1 CIME low-resolution test in EAMxx. These are all smoke tests. MAM4xx has its validation testing suites where we validate all MAM4xx codes. Manual end-to-end validation was done for the entire ACI interface and the results were exactly the same as EAMv2 grid cells up to single precision. We don’t expect an exact match till double precision as the computing environments are different for both runs.
Figures from model analysis
figure_mam_aci_850hPa_ncdact_daily_avg.pdf
figure_mam_aci_850hPa_mass_SO4_daily_avg.pdf
figure_mam_aci_850hPa_mass_POM_daily_avg.pdf
figure_mam_aci_850hPa_ccn_0p5_daily_avg.pdf
figure_mam_aci_850hPa_mass_SOA_daily_avg.pdf
figure_mam_aci_850hPa_ccn_0p1_daily_avg.pdf
figure_mam_aci_850hPa_ccn_0p2_daily_avg.pdf
figure_mam_aci_850hPa_nc_daily_avg.pdf
Standalone Test Timings (Compy):
Label Time Summary:
PEM = 33.83 secproc (60 tests)
bfbhash = 4.82 secproc (1 test)
check = 6.40 secproc (1 test)
cld = 11128.37 secproc (81 tests)
cld_fraction = 4.26 secproc (1 test)
cosp = 53.82 secproc (4 tests)
diagnostics = 494.54 secproc (4 tests)
dp = 1386.93 secproc (7 tests)
driver = 13326.49 secproc (90 tests)
dynamics = 7971.84 secproc (53 tests)
fail = 5.29 secproc (1 test)
mam4_aci = 2367.73 secproc (35 tests)
mam4_optics = 2755.88 secproc (21 tests)
nudging = 717.58 secproc (4 tests)
p3 = 11309.07 secproc (92 tests)
pg2 = 497.80 secproc (10 tests)
physics = 13090.69 secproc (153 tests)
rrtmgp = 11457.10 secproc (90 tests)
shoc = 11505.12 secproc (102 tests)
spa = 4093.34 secproc (34 tests)
surface_coupling = 49.41 secproc (4 tests)
tms = 1884.11 secproc (14 tests)
Important notes:
1. The code that uses output from the heterogeneous freezing is currently missing in P3. We will port and add that code in a follow-up PR.
2. This PR uses a branch of MAM4xx. Once we have all the changes from the branch merged in MAM4xx main, we will switch the submodule