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

Suggested changed in MMM surface layer scheme #3

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

bluefinweiwei
Copy link

Implementation of the MMM surface layer scheme to the CCPP SCM. Please check the code changes below:

Changes in MMM source code (only to work with CCPP SCM, so SUGGESTION ONLY - MMM’s call on what are useful) (link)
Glue code to connect MMM surface layer to CCPP SCM (link)
Host side (SCM) changes (link)

Some important notes for changes made in MMM source code (#1 above)

sf_sfclayrev_timestep_init removed: 1) In CCPP SCM, surface layer variables do not have to be extracted from a 3D array, since one can pass them from the GFS. 2) Another reason is that the “run" phase only has access to the computational “block/chunk” size in the horizontal dimension, which is a smaller sub-subdomain in the MPI subdomain. So, timestep_init, timestep_finalize do not meet this purpose as they would actually access to the entire MPI subdomain. I am open to add lines in interstitial code (*_pre) to extract surface variables from 3D arrays, but this would require more effort to create more interstitial variables in the CCPP. We can discuss.
Some other key mods in *.meta: 1) corrected standard names; 2) modified knobs from integer to logical; 2) modified all the horizontal dimensions to horizontal_loop_extent, which is the standard name used in CCPP for referring to the computational “block/chunk” size; 3) removed "optional = *” as CCPP does not use that anymore.
Feasibility testing:
Tests were done by using the RAP suite as a starting point to compare 3 sets of experiments for TWP-ICE (tropical deep convection case). I have not applied it to land cases as I need to find a case with a LSM activated in SCM.
Expt 1: MMM sfc + MMM ysu
Expt 2: MMM sfc + MYNN pbl
Expt 3: MYNN sfc + MYNN pbl (default RAP)

#2 vs #3 - to compare two sfc schemes (MMM vs MYNN), both using MYNN PBL
#1 vs #2 - both using MMM sfc, so just to reflect diff. b/t MYNN pbl and MMM ysu

You can find some autogenerated results here (link), which Jimy and I have gone through and find within normal ranges. Interestingly, MMM sfc worked even better than MYNN sfc when both are accompanied with the MYNN PBL.

	renamed:    sf_sfclayrev.F -> sf_sfclayrev.F90
	modified:   sf_sfclayrev.meta

	renamed:    sf_sfclayrev.F -> sf_sfclayrev.F90
	modified:   sf_sfclayrev.meta
	modified:   sf_sfclayrev.meta

	renamed:    sf_sfclayrev.F -> sf_sfclayrev.F90
	modified:   sf_sfclayrev.meta
@ldfowler58
Copy link
Owner

I am currently looking at the changes you made with the sourcecode. The goal is to maintain a version that we can use in WRF, MPAS, CM1, and the SCM. I agree with the following proposed changes:

  1. removing subroutine sf_sfclayrev_timestep_init,
  2. renaming subroutine sf_sfclayrev_final to sf_sfclayrev_finalize,
  3. removing the variables eomeg, stbolt, and shalwater_depth from the argument list, and
  4. changing the definitions of isfflx, scm_force_flux, and shalwater_z0 from integers to logicals.

I do not want to add the variables psim10 and psih2 to the argument list since this is not needed in WRF and MPAS because they are not needed in sfcdiags related modules in WRF, MPAS., and CM1. I did not find it to be used (except for being local variables in version 6.0.0 of CCPP-SCM.

Thanks for all your work.

@bluefinweiwei
Copy link
Author

All sounds good to me. Thanks for reviewing the PR.

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.

2 participants