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

GFDL cloud microphysics (slow processes) #122

Merged
merged 17 commits into from
Jul 16, 2018

Conversation

climbfuji
Copy link
Collaborator

See NCAR/ccpp-framework#102 for a decription of these changes.

Julie Schramm and others added 15 commits July 16, 2018 08:30
…the top)

- Fix long name of sinlat to match standard name
…1, add new interstitial variable frland (land_aera_fraction)
…pecified by host model's calling CMakeLists.txt
…ess_of_stratiform_precipitation_amount to lwe_thickness_of_stratiform_precipitation_amount_on_dynamics_timestep
…itial%mprint and Interstitial%phys_reset require additional argument 'Model'
…P-compliant version of GFDL microphysics, change import/use statement in gfdl_fv_sat_adj (different module name)
tem = dtp*con_p001/con_day

do i=1,im
rain1(i) = (rain0(i)+snow0(i)+ice0(i)+graupel0(i)) * tem
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What happened to the lines analogous to rain0(i,1) = max(con_d00, rain0(i,1)) in GFS_physics_driver?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nevermind, I see that some of the interstitial code was folded into the scheme (or its "driver" routine).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I decided to create pre and post routines that take everything not related to flipping arrays and these four lines, because checking that rainfall accumulation fields are >=0 should happen within a scheme - otherwise there is potential that other code might grab this "non-quality-controlled" data and use it.

Copy link
Collaborator

@grantfirl grantfirl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO, gfdl_cloud_microphys_post_2 is a little confusing. Why should this be directly associated with GFDL MP? I understand that there is a test for whether GFDL MP is used, but this code is embedded within the section for determining surface precipitation type. I was thinking that it might fit better with the existing GFS_calpreciptype code. Thoughts?

physics/precpd.f Outdated
@@ -29,7 +29,7 @@ end subroutine zhaocarr_precpd_init
!! | q | water_vapor_specific_humidity_updated_by_physics | water vapor specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F |
!! | cwm | cloud_condensed_water_mixing_ratio_updated_by_physics | moist cloud condensed water mixing ratio | kg kg-1 | 2 | real | kind_phys | inout | F |
!! | t | air_temperature_updated_by_physics | layer mean air temperature | K | 2 | real | kind_phys | inout | F |
!! | rn | lwe_thickness_of_stratiform_precipitation_amount | stratiform rainfall amount on physics timestep | m | 1 | real | kind_phys | out | F |
!! | rn | lwe_thickness_of_stratiform_precipitation_amount_on_dynamics_timestep | stratiform rainfall amount on physics timestep | m | 1 | real | kind_phys | out | F |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm assuming that this was changed since it was multiplied by the 'frain' variable at some point. If so, the long name should be changed too. Otherwise, it's confusing.

Copy link
Collaborator Author

@climbfuji climbfuji Jul 16, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am still confused by the handling of rain. I just check inside GFS_calpreciptype.F90 and there it looks like this is not the case and I should revert this change:

      do i = 1, im
          prec(i) = rainc(i) + frain * rain1(i)
      enddo

! rain1 = rainst

@climbfuji
Copy link
Collaborator Author

Good point about the existing GFS_calpreciptype code. This code has not yet been updated, right? My suggestion is to keep the post_2 as a temporary measure, I can take the calpreciptype interstitial code as my next item on the todo list and merge the post_2 code into there. This way I hopefully understand the different roles of the precip variables better.

Copy link
Collaborator

@grantfirl grantfirl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved. I'm anxious to get this approved and merged although there may be a few issues to address afterward.

@climbfuji
Copy link
Collaborator Author

I am rerunning the CCPP tests on MacOSX and Theia to make sure that reverting the standard names for rainst and using Diag%rain instead of Interstitial(nt)%rainst as the CCPP variable for rain1 doesn't break the code. On the long run, we should define two types of rainfall fields for each hydrometeor, one on dynamics timestep and one on physics timestep for consistency.

…ame change from lwe_thickness_of_stratiform_precipitation_amount to lwe_thickness_of_stratiform_precipitation_amount_on_dynamics_timestep, because rain1/rn is on physics time step
…_of_precipitation_amount_on_dynamics_timestep as rain1, because lwe_thickness_of_stratiform_precipitation_amount_on_dynamics_timestep does not exist in FV3
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