Open JulioTBacmeister opened 2 years ago
@tilmes @fvitt @dan800 we are trying to list all the places where there is subgrid vertical transport of species. Could you double check my understanding below? This is initially to understand what is currently going on for the default CAM6 physics (not CARMA). (pls consult https://github.com/NCAR/amwg_dev/discussions/76 on different tracer categories: water tracers, chemical tracers, aerosol tracers)
Pure Vertical Diffusion CLUBB - diffuses all tracers except aerosols and NUMLIQ. Does not diffuse T/thl or Q/qt (prognostic!) MAM (subroutine explmix in ndrop.F90) - diffuses aerosols GW - @JulioTBacmeister? vertical_diffusion.F90 - molecular diffusivity (?)
Transport from ZM convection ZM convtran phase 1 - water tracers ZM convtran phase 2 - chemical tracers (+ aerosols if convproc_do_aer=F?) MAM - aerosols if convproc_do_aer=T
Surface Emissions vertical_diffusion.F90 - all tracer emissions (?) dumped into lowest model level (except Q->LHFLX, BC in CLUBB) [edit - Hui Wan's showed that this should occur upstream of subgrid vertical transport, and this mixing should be upstream of dry deposition. We currently don't do this and the result is emissions dumped into lowest level get deposited by dry dep before being given the opportunity to be mixed vertically.]
Here is what I understand from the code: Convective transport for both MAM and CARMA (even though not of interest currently) are only performed in src/chemistry/modal_aero/modal_aero_convproc.F90 if convproc_do_aer is set to true (in the namelist). The setttings are done in chemistry/modal_aero/modal_aero_data.F90: call cnst_set_convtran2(numptr_amode(m), cam_do_aero_conv). Else, aerosols are convected in the zm routine.
I agree that ndrop is doing diffusion of aerosols.
@adamrher regarding the diffusion in ndrop, we need to check whether all aerosols or only cloud-borne aerosols experience diffusion, I talked to Xiaohong and he mentioned that the later would be true.. need to check!
This could not be any more confusing. CLUBB is taking special care to set the MAM aerosols to false, so as to not double-count mixing already done in ndrop.F90. The exact aerosols it sets to false could be changing on the fly, as they are activated in cloud droplets ... I'd need to run w/ some print statements to be sure. See how CLUBB omits the MAM aerosols here: https://github.com/ESCOMP/CAM/blob/0404b7288288f53ba94da8d36f510a6dfc4f68a0/src/physics/cam/clubb_intr.F90#L952-L974
@XiZhao1013 can you help us understand this better, or provide Xiaohong's git handle?
In ndrop, explmix is called and applies vertical diffusion to both cloud borne and interstitial aerosols, just checked.
@adamrher Thanks, I have forwarded this to Xiaohong and our group, they may add more comments later.
Yes, as @adamrher said. The vertical mixing of aerosol is handled in MAM (ndrop), not in CLUBB.
Thanks, Zheng Lu (at Xiaohong's Group), and @mingxuanwupnnl for talking about this with me.
In the spirit of unifying diffusion operations in CAM, can anyone see a problem with computing the diffusion coefficients in ndrop.F90, but applying them in CLUBB's diffusion solver? The only issue I could see is that CLUBB is located upstream of where ndrop is called in the time-loop (microp_aero_run
I think).
@huiwanpnnl bringing you in to this convo in case you're interested.
Aerosols are changed from interstitial to cloud borne during the diffusion process, so I guess, you could bring this part to CLUBB but have to add those processes there.
Xiaohong instructed me to post his comments here: "I know some years ago, only mixing for cloud droplet number is treated in ndrop (dropmixnuc). It is done to have implicit solver of cloud droplet number change due to mixing with environment (related to resuspension of cloud borne aerosols). At that time Steve Ghan and Dick Easter were specifically interested in cloud droplet number, and mixing of cloud water mixing ratio and aerosols are handled by the turbulence scheme. It is worth to check if ndrop treats all MAM aerosols and cloud droplet number now, and CLUBB does all else."
Thank you @adamrher for involving me. Indeed interested. Two caveats about my comments below: (1) I don't have access to CAM6 or newer CAM codes, so I can only speak about EAM. (2) My understanding of dropmixnuc
is limited: from past conversations with Dick Easter and @kaizhangpnl, I got a rough idea about what dropmixnuc
does but I have not spent time to understand all details of the equations and numerics.
What I see in dropmixnuc
in EAM and heard from Dick Easter and @kaizhangpnl seems different from @XiZhao1013's notes about the old treatment, possibly because of version differences (evolution of code). In EAM,
dropmixnuc
calculates the changes of interstitial aerosol mixing ratios, cloud-borne aerosol mixing ratios, and stratiform cloud liquid number mixing ratio caused by turbulent mixing and aerosol activation/resuspension. explmix
suggests. In the spirit of unifying diffusion operations in CAM, can anyone see a problem with computing the diffusion coefficients in ndrop.F90, but applying them in CLUBB's diffusion solver? The only issue I could see is that CLUBB is located upstream of where ndrop is called in the time-loop (
microp_aero_run
I think).
@adamrher, I think dropmixnuc
uses diffusion coefficient provided by CLUBB, so it is good that it is located downstream of CLUBB.
Note that dropmixnuc
uses an explicit discretization method which is computationally inefficient. The solver in CLUBB is implicit hence allows for longer time steps. To unify turbulent mixing in CLUBB and dropmixnuc
, one could
dropmixnuc
(i.e., merge with explmix
but replace the explicit algorithm in explmix
), orAlso note that the aerosol activation/resuspension calculation needs information about cloud fraction change, which needs the liquid cloud fraction calculated by CLUBB. This results in the requirement that dropmixnuc
be calculated downstream of CLUBB's PDF closure.
I don't think dropmixnuc should be in charge of diffusing all trace constituents. I would prefer this to be done somewhere else, maybe not even in CLUBB but in a separate vertical diffusion solver that accumulates diffusivities from all relevant processes.
@huiwanpnnl thanks for providing your understanding. I also think that @XiZhao1013's notes are probably for an older version; I believe dropmixnuc
is mixing all the interstitial and cloud-borne aerosols, as well as cloud liquid number. I'm trying to double check this with print statements in that module, but this is a work in progress. I can confirm that clubb intentionally does not mix all 19 aerosols + NUMLIQ for the specific compset I just ran ... So this is consistent with it being mixed in dropmixnuc
.
@JulioTBacmeister says
I don't think dropmixnuc should be in charge of diffusing all trace constituents. I would prefer this to be done somewhere else, maybe not even in CLUBB but in a separate vertical diffusion solver that accumulates diffusivities from all relevant processes.
I'm trying to figure out if this is even possible. @tilmes statement:
Aerosols are changed from interstitial to cloud borne during the diffusion process
Is true. I'm wondering whether we can separate out the diffusion process, so it can be done elsewhere, from the activation/resuspension. For example, here is a typical call to explmix
in dropmixnuc
I believe the source
input argument is the tendency due to activation. Not sure about "resuspension" I'm out of my wheelhouse here. But nonetheless, this mixing routine seems to just diffuse raercol
using CLUBB's KVH, while also adding the increment due to the srouce term. Could we instead just set the new state raercol = raercol + dt*source
, and omit the call to explmix
entirely, so that we can do this mixing somewhere else? Is this too crazy of an idea? I am thinking the diffusion tendencies would be rather small, and that activation is the more important process that probably should be updated within the CLUBB/MG subcycles, as the clouds evolve.
@fvitt would you mind reading over this thread and adding some input? In particular, my last post proposing removing explmix
from dropmixnuc
?
@adamrher This is above my pay grade. However, to quote the Abdul-Razzak and Ghan paper that I believe describes the process coded in ndrop, "aerosol activation is a dynamic process as the supersaturation with respect to water first grows in an updraft...". So, can we separate the vertical mixing from the activation? On the surface, it does not seem to me that we can. But, what do I know?
Vertical diffusion is calculated in several places within CAM physics: CLUBB, several times within the GW codes, and possibly other places when molecular diffusion is on. We should accumulate the various diffusivities and do a single diffusion calculation for each species. This would make UBCs for example easier to track as well as being more economical.