Skip to content

Changes in cloud/radiation interaction in GSD physics suite that uses#12

Merged
DomHeinzeller merged 6 commits into
NOAA-GSL:gsd/developfrom
tanyasmirnova:gsd-dev-clouds
Mar 13, 2020
Merged

Changes in cloud/radiation interaction in GSD physics suite that uses#12
DomHeinzeller merged 6 commits into
NOAA-GSL:gsd/developfrom
tanyasmirnova:gsd-dev-clouds

Conversation

@tanyasmirnova
Copy link
Copy Markdown

Thompson MP, MYNN pbl and GF convection:

  1. Switch the order of calls, first MYNNrad_pre (or SGSCloud_RadPre),
    then rrtmg_pre. This will add sub-grid clouds from MYNN PBL (or MYNN PBL and GF)
    to QC and QI, and these updated hydrometeors will be used to compute cloud paths
    and effective radii.
  2. In rrtmg_pre with the use of THompson MP:
    • use Thompson's subroutines make_IceNumber and make_DropletNumber
      to compute number concentrations for subgrid clouds.
      • use calc_effectRad to compute effective radii for QC and QI
        with sub-grid clouds.
      • added option (clduni) to use the same subroutine to compute
        water paths as with the GFDL MP. For this input.nl should set
        effr_in=.true.
      • the progcld5 is used mostly to compute Xu-Randall cloud
        fraction.
  3. Added SGSCloud_ modules to replace MYNNrad to add all subgrid
    clouds to QC and QI (from MYNN PBL and GF conv).
  4. Added convective clouds qci_conv to GF scheme and SGSCloud_RadPre.
  5. Computation of total cloud fraction in progcld5 is change not to
    depend on shallow/deep convection. Not needed in the current version of
    GSD suite.

Thompson MP, MYNN pbl and GF convection:
1. Switch the order of calls, first MYNNrad_pre (or SGSCloud_RadPre),
then rrtmg_pre. This will add sub-grid clouds from MYNN PBL (or MYNN PBL and GF)
to QC and QI, and these updated hydrometeors will be used to compute cloud paths
and effective radii.
2. In rrtmg_pre with the use of THompson MP:
	- use Thompson's subroutines make_IceNumber and make_DropletNumber
          to compute number concentrations for subgrid clouds.
        - use calc_effectRad to compute effective radii for QC and QI
          with sub-grid clouds.
        - added option (clduni) to use the same subroutine to compute
          water paths as with the GFDL MP. For this input.nl should set
          effr_in=.true.
        - the progcld5 is used mostly to compute Xu-Randall cloud
          fraction.
3. Added *SGSCloud_* modules to replace *MYNNrad* to add all subgrid
clouds to QC and QI (from MYNN PBL and GF conv).
4. Added convective clouds qci_conv to GF scheme and SGSCloud_RadPre.
5. Computation of total cloud fraction in progcld5 is change not to
depend on shallow/deep convection. Not needed in the current version of
GSD suite.
2. Bug fix for the case when GF scheme is used without MYNN. In this case always use
Xu-Randall cloud fraction.
@tanyasmirnova
Copy link
Copy Markdown
Author

@hannahcbarnes
Thank you for taking a look at the modified code and also for checking with @haiqinli.
I can reply with "yes" to all four questions you asked in your comment. Therefore, it means that we can proceed with merging the changes into the gsd/develop branch.

@tanyasmirnova
Copy link
Copy Markdown
Author

@climbfuji
Dom, one question: the sgscloud_radpre updates QC and QI with sub-grid clouds. Do we need to add qc, qi and also nwfa to the argument list in GFS_rrtmg_pre, or the updated values are already in the Statein%qgrs(:,k2,j) which will be sent to tracer1 in GFS_rrtmg_pre:

do j = 2, NTRAC
do k = 1, LM
k1 = k + kd
k2 = k + lsk
tracer1(:,k1,j) = max(0.0, Statein%qgrs(:,k2,j))
enddo
enddo

I wonder if the following loop is redundant:

  if ((Model%do_mynnedmf.or. (imfdeepcnv == imfdeepcnv_gf)) .and. Model%kdt > 1) then
  ! for MYNN PBL and GF convective include subgrid clouds into tracer1 
    do k = 1, LM
      k1 = k + kd
      k2 = k + lsk
      tracer1(:,k1,ntcw) = max(0.0, qc(:,k2))
      tracer1(:,k1,ntiw) = max(0.0, qi(:,k2))
    enddo
  endif

@climbfuji
Copy link
Copy Markdown

If the SGScloud use the correct variables (standard names) that correspond to the qgrs entries, then there is no need to do anything else. I don't know about your question whether the loop is redundant or not.

@DomHeinzeller
Copy link
Copy Markdown

I am working on this code and there are several problems with it. Generally, the changes are extensive and it will be difficult to propose them to EMC. I am trying to encapsulate the changes in easier-to-recognize blocks, but I am wary that they will accept them (unless we show significantly better results, of course). Other issues:

  • The code is faulty: if Thompson without aerosols is used, it will segfault because it tries to address arrays that are not allocated.
  • The code changes the answer for all microphysics using progcld5. This includes WSM6 (probably not an issue, because not in CCPP and won't be ported) and Ferrier-Aligo (imp_physics = 15). I do not think we can make the changes in radiation_clouds.f without going through a proper testing of the Ferrier-Aligo microphysics and getting the developer's buy-in.
  • Coding styles should be followed: 2-space indents, vertically aligned blocks, lowercase Fortran statements (if, do, subroutine, ...).
  • Several variables are declared as intent(out) but in reality they are intent(inout), because there is an option to return from the subroutine right at the beginning (for example if it is the first time step), some other intents are incorrect/there is a mismatch between the Fortran source code and the metadata.

I am importing the branches for ccpp-physics and fv3atm into the current version of the code, and I am fixing all of those as I go through them, except the change to radiation_clouds.f. The question is if we need to create progcld6 to use instead of progcld5 if certain conditions are met (for example, if SGScloud_{pre,post} is used? or every time Thompson MP is used?), or if the original progcld5 works for us.

@tanyasmirnova
Copy link
Copy Markdown
Author

Dom,
Thank you very much for fixing the issues with my code changes. Yes, I forgot about the non-aerosol Thompson.
Considering the progcld5...
With the current version, I switched to use progclduni with the Thompson MP. The option to use progcld5 remains if clduni=.false.
The main change is progcld5 is to remove the dependence of total cloud cover computation on shallow and deep convection, which, as we discussed with John Brown, is the left-over from Thompson MP implementation in the old GFS. I was thinking to make a separate subroutine that will only compute Xu-Randall cloud cover fraction and skip the rest of progcld5, but did not get to this yet, and use progcld5 for now. If we make cldfrac subroutine inside the radiation_clouds.f then changes to progcld5 could be removed, and the original version reinstated.
I would be glad to work with you on the clean-up changes if necessary.
Thanks,
Tanya

@DomHeinzeller DomHeinzeller merged commit 1e5bbc8 into NOAA-GSL:gsd/develop Mar 13, 2020
tanyasmirnova pushed a commit to tanyasmirnova/ccpp-physics that referenced this pull request May 13, 2021
…alculation_to_its_own_scheme_and_z0_composite_consistent_tanya_21apr21

Move sfc emis alb calculation to its own scheme and z0 composite consistent tanya 21apr21
DomHeinzeller pushed a commit that referenced this pull request Dec 15, 2021
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.

4 participants