E3SM-Project / scream

Fork of E3SM used to develop exascale global atmosphere model written in C++
https://e3sm-project.github.io/scream/
Other
80 stars 57 forks source link

Calculate total st cloud fraction in SHOC (ast = max[alst,aist]) #938

Closed AaronDonahue closed 3 years ago

AaronDonahue commented 3 years ago

Currently the shoc interface in the AD only handles liquid cloud fraction, alst. But it is expected that macrophysics is responsible for computing the total cloud fraction as the maximum cloud fraction between liquid and ice. This is later used by microphysics (P3).

PeterCaldwell commented 3 years ago

I had expected this to already be in the C++ SHOC interface because it is in shoc_intr.F90: https://github.com/E3SM-Project/scream/blob/881f8b8717096d2ba91afcf48d26494afbb5c138/components/eam/src/physics/cam/shoc_intr.F90#L1010 . But it makes sense in retrospect that @tcclevenger didn't include it because the F90 calls a function from the bowels of CAM to compute ice cloud fraction (aist).

It is also good that we don't have the existing F90 ice cloud fraction scheme coded up because it sucks and we have a git issue in the v0.1 campaign (#902 ) to replace it with a scheme that is just "aist=0 if qi<1e-5 else aist=1". Then we just need the additional "ast = max(aist, alst)" line to get the ast that microphysics wants.

PeterCaldwell commented 3 years ago

Update: slack discussion here: https://acmeclimate.slack.com/archives/CBLM2THEK/p1616424624080700 clarifies that we should make ice_cloud_fraction its own atm process in v1 rather than stuffing it into SHOC as is currently done in v0.

AaronDonahue commented 3 years ago

@PeterCaldwell , so we can assume that alst will still be provided by shoc?

PeterCaldwell commented 3 years ago

@AaronDonahue - yes, computing alst is a central goal of shoc.

AaronDonahue commented 3 years ago

@tcclevenger , as far as I can tell alst isn't being calculated, or at least provided by the shoc-ad interface. It looks like it is "required" but not "computed". According to @PeterCaldwell 's comment above shoc should also be computing it. Is that something that you could add to the shoc interface? It is probably a post-processing step.

tcclevenger commented 3 years ago

Yes, in post processing in shoc_intr.F90, alst is set: alst = min(cloud_frac, 1). I will add this as a computed field and start to work on the post processing. Will probably need to have a discussion at some point exactly what goes in there and what is left out from shoc_tend_e3sm() subroutine (a lot of ptend updates, and other variables not touched by shoc_main).

PeterCaldwell commented 3 years ago

Thanks Conrad! I actually think you did the right thing by assuming nothing from SHOC is needed until you're told otherwise. This will help us remove unnecessary variables from the interface. I think Aaron's FM variable names confluence page will clarify what you need to add to the interface. @bogensch told me he will try to work on this page tomorrow.

tcclevenger commented 3 years ago

@PeterCaldwell Great, I'll reach out when this pages is finished being updated and start to get the post processor in asap.

bartgol commented 3 years ago

@AaronDonahue I suspect that the cld_fraction atm proc is making this issue outdated. If so, go ahead and close this.

PeterCaldwell commented 3 years ago

Yeah, closed via #944