-
Notifications
You must be signed in to change notification settings - Fork 169
Using relatively new Thompson cloud fraction scheme, tune a few things to cause fewer overall clouds, particularly high clouds #809
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
Merged
Merged
Changes from 3 commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
5ebe5dc
following early results by Anning, make fewer clouds, especially high…
gthompsnWRF b7ddc45
add in less LWC and IWC in the partly cloudy boxes
gthompsnWRF a1ca10e
bug fix, LM should have been IM
gthompsnWRF 79325a5
make gridkm even simpler
gthompsnWRF 20e3b79
make gridkm array in X-dimension
gthompsnWRF 5a93312
alter aerosol surface emission based on a WRF change tested by Jimy D…
gthompsnWRF a45d641
one more tuning for reducing cloud ice amounts in partly cloudy boxes
gthompsnWRF 2181d0c
reduce max ice number conc to fewer than 500 per liter of air
gthompsnWRF 251afdc
Merge branch 'main' into make_fewer_high_clouds
gthompsnWRF File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
@gthompsnWRF I'm confused by this change. The dx variable is an array over the horizontal index but you're referencing with ii_half which is a function of the vertical domain size. Also, the original formulation had sqrt(2) presumably to calculate the diagonal length of the grid, which is now missing. Would you mind explaining this change? I realize that gridkm is only used in the progcld_thompson, so any effects are confined there, but in the spirit of good code reviewing, I'm trying to understand this.
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.
Doggone! That should have been variable
IMnotLM. Thanks for catching it! Yes, I dropped out the diagonal (sqrt(2)). I really do not know the DX spacing of a cube-sphere grid, but does DX vary a whole lot across1..IM? Perhaps I don't even need to bother with the half-point and first-point average, I just thought it might better represent avg. grid spacing.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.
Thanks @gthompsnWRF. Regarding your question, I'm definitely not the authority to answer it, but my guess would be that it depends quite a bit on how big the "chunks" (IM) are and whether the columns are near a cubed sphere edge or not. Also, I don't think that we can assume that there is a specific horizontal relationship amongst the columns. I.e., using the midpoint index of the array (IM/2) doesn't necessarily mean that it will be in the "center" of the current chunk of columns in any physically-consistent sense. My guess would be that if you want one "average" gridkm value, you would actually need to calculate an average, which may be overkill for your use, I don't know.
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 am curious, will this impact the decomposition reproducibility? At the single point, it seems the gridkm will change if we have different decompositions (different mpi tasks) or different chunksize (IM).
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.
Yes, it likely will. UGWP had exactly the same problem. I think the best solution would be to make gridkm a gridkm(i) with i=1...IM. That will also help with non-uniform grids such as stretched nests and regional grids that are not using the ESG (Extended Schmidt Gnomonic) grid. It's a small overhead but necessary.
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.
As others have already mentioned, it is best to use the exact grid spacing - especially as CCPP has application beyond the UFS/GFS with the FV3 dycore.
As I haven't delved very far into the inner workings of CCPP metadata and variable definitions, is it always the case that dx will be provided/stored in meters?
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.
Not necessarily, it could be in
kmas well. Meters of course is the standard unit and makes a lot of sense, and it is also the unit in which the host model (fv3atm) stores the variable. If host model and scheme use different units, then CCPP can implement automatic unit conversions, as long as these unit conversions are implemented (for my example above, CCPP knows how to convertmtokmand back). These conversions obviously introduce an overhead in the auto-generated caps, therefore it is best to use the same unit as the host model. And, if all host models used the same standard units, then there would be no unit conversions at all.