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

Update thompson mp 20210213 #567

Merged
merged 7 commits into from
Mar 31, 2021

Conversation

gthompsnWRF
Copy link
Collaborator

There are many changes here. They can be classified into three types:

1. Improve handling of external table files

by using module-scope file names declared near the top. This was also done to simplify the situation of updating variables (or methods) to table data with a version number added to file name(s).

  • thomp_table_file
  • qr_acr_qg_file
  • qr_acr_qs_file
  • freeze_h2o_file

There was also a bug fix for qi_aut_qs because it was contained in an IF-block incorrectly.

2. Reduce redundancy, lower memory footprint

  • mp_thompson.F90::subroutine mp_thompson_init now does aerosol initialization rather than module_mp_thompson.F90::thompson_init. So a duo call to that routine from the former is unnecessary because is_aerosol_aware was already set true/false somewhere else.
  • Temporary 2D arrays to hold each of 11 arrays (qc_mp, qr_mp, qi_mp, etc.) are not needed. Only the temporary array for water vapor (qv) is needed since specific humidity is convert to qv.
  • A new boolean variable controls whether to convert hydrometeor species into per kg of dry air or per kg of (dry+vapor) air.
  • Limits for calculated radiative effective radius were added to make it less prone to mismatches in a number of code locations.

3. Physics changes

  • Graupel category variable Y-intercept parameter has been updated. A journal manuscript is in process.
  • Allowance for larger number and smaller size ice crystals.
  • Autoconversion of cloud water to rain includes a new constant factor that increases its initial size. This improves squall line leading edge reflectivity.
  • Bug fix for ice number tendency from rain freezing.
  • Melting snow terminal velocity improved based on Iversen et al. Additional modifications forthcoming using wetbulb temperature.
  • Bug fix for surface aerosol emission source, NWFA2D
  • Alterations intended for stochastic MP perturbations based on DOI: 10.1175/MWR-D-20-0077.1

Copy link
Collaborator

@climbfuji climbfuji left a comment

Choose a reason for hiding this comment

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

I did a first pass through your code changes, and this looks really good. Thanks for taking the time to look into the code with such detail. My question is why the convert_dry_rho) logic isn't needed in the _init routine. Because you know for sure that the routines that calculate the aerosol distributions/surface emission rates and approximate the second moments if absent assume moist air? If we knew for sure for the main Thompson code, could we get rid of the conversion entirely?

I left one additional comment/concern in the part that removes the WRF v3.8.1 CCN surface emission rate calculations. Using the v4 formula (which you did change slightly) was hugely problematic for us. Maybe we should discuss this in a google meeting with a few GSL physics developers.

endif
nwfa2d(i) = 10.0**(LOG10(nwfa(i,1)*1.E-6)-3.69897)
nwfa2d(i) = nwfa2d(i)*h_01 * 1.E6
nwfa2d(i) = nwfa(i,1) * 0.000196 * (airmass*5.E-11)
Copy link
Collaborator

Choose a reason for hiding this comment

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

This change will need to be tested carefully. We originally used your WRF v4 version, but that led to a runaway of CCN for global runs within as little as 24h. We scaled back to the WRF v3.8 values and got better results (still, CCN keep accumulating in the atmosphere, just slower). We talked about investigating in detail if certain removal processes weren't working as intended, but thus far nobody had the time to do that.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

This is a factor of 4 different - but it should otherwise really closely match the V3.8 WRF code. Mary Barth and Lara Fowler found my error. Since this is still just a guestimate that I came up with in the first place, the number approx 0.0002 is the "tunable parameter" in my view of it.

I did mention this item many years back when you started transitioning these physics to a global context since I had no idea if the WRF results of steady aerosols (for 13 years) would hold up in a global context where the aerosols never "leave" the domain. In the years since, I have always considered this a problem since I believe the WRF runs appear to hold steady since there is near constant in-flux and out-flux through the domain.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Re: convert_dry_rho ... I would certainly like to put this issue to rest. We need input from WRF experts.
We can also so easily transfer the exact same change into the _init routine, but this is really just a bit of waste of time for the initialization since the difference is minuscule. But, the orig code was omitting the aerosol variables as well. So just taking it out seems OK. If we find WRF is the oddball for dry vs. moist air, then using my new boolean method is quick and easy to add - but do it like I did with the run subroutine since I did all variables.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Greg, would you be able to seek the input from the WRF experts? Or how do you suggest we proceed?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I will ask Jimy D. by email and report back or just change code to match his reply.

Copy link
Collaborator

Choose a reason for hiding this comment

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

@gthompsnWRF Did you get the information from Jimy you were looking for?

@@ -3742,19 +3704,21 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, &
qv1d(k) = MAX(1.E-10, qv1d(k) + qvten(k)*DT)
qc1d(k) = qc1d(k) + qcten(k)*DT
nc1d(k) = MAX(2./rho(k), MIN(nc1d(k) + ncten(k)*DT, Nt_c_max))
nwfa1d(k) = MAX(11.1E6/rho(k), MIN(9999.E6/rho(k), &
nwfa1d(k) = MAX(11.1E6, MIN(9999.E6, &
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@ligiabernardet The removal of air density is basically a bug fix; otherwise, the number of aerosols with NWP models going way, way up high to single digit pascals would result in far too much effect to AOD calculation for radiation.

Copy link
Collaborator

Choose a reason for hiding this comment

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

But in the main calculations the nwfa1 is multiplied by rho. See, for example:
1785 nwfa(k) = MAX(11.1E6, MIN(9999.E6, nwfa1d(k)*rho(k)))
Will this be inconsistent with the change of line #3745?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

The back and forth between number per kg and number per cubic meter is rather annoying. I always intended internal calculations to be using the latter but conversions to per kg of air is needed for advecting the variables. And when Laura Fowler or someone else ran with MPAS and put the model top at something incredibly high, the problem becomes dividing by rho with a value like 1E10 produces truly massive numbers. When I originally coded things up for aerosols, I never even considered model tops like 200km.

Instead of worrying so much about this, we can just use the new code because we are talking about constraining the number to something sensible and the numbers I picked are already entirely arbitrary. Can I suggest we move on and note as a potential issue in future (which I doubt will get investigated)?

else
prs_rcs(k) = -tcs_racs1(idx_s,idx_t,idx_r1,idx_r) &
- tms_sacr1(idx_s,idx_t,idx_r1,idx_r) &
+ tmr_racs2(idx_s,idx_t,idx_r1,idx_r) &
+ tcr_sacr2(idx_s,idx_t,idx_r1,idx_r)
prs_rcs(k) = MAX(DBLE(-rs(k)*odts), prs_rcs(k))
prr_rcs(k) = -prs_rcs(k)
pnr_rcs(k) = tnr_racs2(idx_s,idx_t,idx_r1,idx_r) & ! RAIN2M
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@ligiabernardet bug fix

@@ -2475,7 +2509,6 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, &
pnr_rfz(k) = MIN(DBLE(nr(k)*odts), pnr_rfz(k))
elseif (rr(k).gt. R1 .and. temp(k).lt.HGFR) then
pri_rfz(k) = rr(k)*odts
pnr_rfz(k) = nr(k)*odts ! RAIN2M
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@ligiabernardet together with line#2904, this is a bug fix.

end if
! Ensure we have 1st guess cloud droplet number where mass non-zero but no number.
where(qc <= 0.0) nc=0.0
where(qc > 0 .and. nc <= 0.0) nc = make_DropletNumber(qc*rho, nwfa) * orho
Copy link
Collaborator

Choose a reason for hiding this comment

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

@gthompsnWRF Greg, in the WRF/dyn_em/module_initialize_real.F the number concentration of droplets is computed as:
make_DropletNumber (moist(i,k,j,P_QC)*temp_rho, &
& *scalar(i,k,j,P_QNWFA)temp_rho, grid%xland(i,j))
Is it a bug in FV3 when we do not multiply nwfa by rho?

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, for consistency sake this is needed so that both variables are in per cubic meter. Thanks for catching it! I will fix/commit change.

where(nwfa2d<0) nwfa2d = 0.0
where(nifa2d<0) nifa2d = 0.0
end if

! Geopotential height in m2 s-2 to height in m
hgt = phil/con_g

! Density of air in kg m-3 and inverse density of air
rho = prsl/(con_rd*tgrs)
Copy link
Collaborator

Choose a reason for hiding this comment

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

@gthompsnWRF Greg, you have rho computed in module_mp_thompson.F as:
rho(k) = 0.622p1d(k)/(Rt1d(k)*(qv1d(k)+0.622))
Should RHO be computed the same way in FV3/ccpp/physics/physics/mp_thompson.F90?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Per the conversation up above about which air density we need, this is a fair statement and I don't know how to resolve (yet). I did not code this line, must have come from Dom in the first place, but I do believe that moist air density should be used everywhere (I think).

Copy link
Collaborator

Choose a reason for hiding this comment

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

I don't remember where I got this from, if I came up with it or if this was already in the old 2012 Thompson MP implementation in IPD.

Copy link
Collaborator

Choose a reason for hiding this comment

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

@gthompsmWRF Greg, I agree that for consistency with the module_mp_thompson.F90, the moist air density should be used everywhere. I propose to make the following change:
! Density of air in kg m-3 and inverse density of air
rho = 0.622prsl/(con_rdtgrs*(qv_mp+0.622))
orho = 1.0/rho
Thank you.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@tanyasmirnova I went ahead and changed to moist air density in this PR directly and commit/push the new code change. Perhaps you might revert your mp_thompson.F90 version back and let my PR take over this step. Then, if we can isolate the step of makeDropletNumber to a single location, rather than multiple, I think a merge will go quite easily.

Copy link
Collaborator

Choose a reason for hiding this comment

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

I believe it would be easiest to merge the changes from Tanya into the NOAA-GSL fork, gsl/develop branch, followed by your changes on top if it, cleaning up any overlaps or conflicting changes. Then send the clean version back to master in a week or two. Objections?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Thank you, Greg, for adding the change to moist air density to your PR.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@climbfuji You are far better than me at doing these things, so all is OK to me.

Copy link
Collaborator

Choose a reason for hiding this comment

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

No objections form me, Dom. Thank you!

@ligiabernardet
Copy link
Collaborator

@gthompsnWRF Is this a reasonable high-level summary of the bugs addressed here: Bugs in the formulations of freezing of water drops into graupel/cloud ice, rain collecting snow, and number of aerosols have been identified and are under review. If not, please help reword. You are also welcome to add more detail, but keep it relatively high-level. Thanks.

@gthompsnWRF
Copy link
Collaborator Author

@gthompsnWRF Is this a reasonable high-level summary of the bugs addressed here: Bugs in the formulations of freezing of water drops into graupel/cloud ice, rain collecting snow, and number of aerosols have been identified and are under review. If not, please help reword. You are also welcome to add more detail, but keep it relatively high-level. Thanks.

I have no concerns about wording here. BTW, expected impacts by these fixes expected to be quite minor. But where do you plan to place this high-level summary and for what purpose? Isn't my description at the top of PR sufficient in general?

@ligiabernardet
Copy link
Collaborator

@gthompsnWRF I would like to use this high-level description in the Known Issues page of CCPP (e.g., for v4.1: http://dtcenter.org/community-code/common-community-physics-package-ccpp/ccpp-scm-version-4-1#issues)

@gthompsnWRF Is this a reasonable high-level summary of the bugs addressed here: Bugs in the formulations of freezing of water drops into graupel/cloud ice, rain collecting snow, and number of aerosols have been identified and are under review. If not, please help reword. You are also welcome to add more detail, but keep it relatively high-level. Thanks.

I have no concerns about wording here. BTW, expected impacts by these fixes expected to be quite minor. But where do you plan to place this high-level summary and for what purpose? Isn't my description at the top of PR sufficient in general?

@climbfuji
Copy link
Collaborator

@gthompsnWRF I pulled the changes from this PR into NOAA-GSL#80 and resolved the few merge conflicts. I would like to get that version tested, then address the issue of multiple places calling the functions to make number concentrations, then address any other issues you see, before sending it back to NCAR ccpp-physics master. Because the commit history in NOAA-GSL#80 is retained, your original PR #567 should automatically be flagged as "merged" once the gsl/develop code comes back to NCAR ccpp-physics master.

Does this sound ok for you?

DomHeinzeller added a commit to NOAA-GSL/ccpp-physics that referenced this pull request Mar 16, 2021
…ed_into_gsl_develop

Update thompson mp 20210213 (NCAR#567) for gsl/develop
@DomHeinzeller
Copy link
Contributor

This PR has been merged into the NOAA-GSL fork, branch gsl/develop as part of NOAA-GSL#80. When the gsl/develop code will be sent back to master, this PR should get flagged as merged automatically.

hannahcbarnes pushed a commit to hannahcbarnes/ccpp-physics that referenced this pull request Aug 3, 2022
* Add logical convert_dry_rho for Thompson MP, hardcoded to false
* Initialize all variables to NaN in ccpp-physics in DEBUG mode
* Update submodule pointer for ccpp-physics
hannahcbarnes added a commit to hannahcbarnes/ccpp-physics that referenced this pull request Aug 3, 2022
* Update .gitmodules and submodule pointers for ccpp-framework and ccpp-physics for gsl/develop branch

* RUC ice for gsl/develop (replaces NCAR#54 and NCAR#56) (NCAR#60)

Implementation of RUC LSM ice model in CCPP

* Squash-merge climbfuji:rucice_gfsv16dzmin into gsl/develop

* Fix bug in gfsphysics/GFS_layer/GFS_typedefs.F90 from merge

* Remove lsm_ruc_sfc_sice from suite FV3_GSD_v0_unified_ugwp_suite and update submodule pointer for ccpp-physics

* Remove sfc_sice from ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite.xml

* Update submodule pointer for ccpp-physics

* Revert change to .gitmodules and update submodule pointer for ccpp-physics

Co-authored-by: Dom Heinzeller <climbfuji@ymail.com>

* Update gsl/develop from develop 2020/12/08 (NCAR#61)

* Fix for updating stochastic physics on separate time-step. (NCAR#199)

This bug fix allows the random patterns in the stochastic physics persist the for a period of time (defined as SKEBINT,SPPTINT, etc.) before calculating new patterns.
The fix is to move the allocation of the saved variables into the init section of stochastic_physics_wrapper, and remove the deallocates in the run section.

* Bug fixes in (1) running with frac_grid=T and GFDL MP and (2) restarting with frac_grid=T (NCAR#204)

* -- Pointing to Moorthi's modifications in ccpp/physics, which fixed the crash when running GFDL MP with frac_grid=T;
-- Not setting fice to zero in order to leave lake ice untouched;
-- Restart in the coupled model with the default physics is reproducible, if bad water temperature is only filtered at initial time;
Co-authored-with: Shrinivas Moorthi <shrinivas.moorthi@noaa.gov>
Co-authored-with: Denise Worthen <Denise.Worthen@noaa.gov>

* Revert change to .gitmodules and update submodule pointer for ccpp-physics

Co-authored-by: Phil Pegion <38869668+pjpegion@users.noreply.github.com>
Co-authored-by: shansun6 <48043606+shansun6@users.noreply.github.com>

* Update submodule pointer for ccpp-physics - MYNN surface layer updates and bugfixes (NCAR#63)

* Land stochastic perturbations (wrapper PR for NCAR#65) (NCAR#68)

* Move initialization of stochastic physics after the physics
initialization in CCPP.
* Add albedo variables to land perturbations with lndp_type=2 option. Change to accommodate soil perturbations with RUC LSM.

* Max/min soil moisture variables are introduced via GFS_Control_type
variables instead of through the use of namelist_soilveg*. This is a
more flexible way for different LSMs.

* Added pores and resid variables for max/min soil moisture to GFS_typedefs.f90.

* Remove tracer_sanitizer from all suites and from CCPP prebuild config

* Add namelist option to apply land surface perturbations at every time step, clean up stochastic_physics/stochastic_physics_wrapper.F90

Co-authored-by: tanyasmirnova <tanya.smirnova@noaa.gov>

* Stochastic land perturbations: add roughness length over land to the perturbed variables (NCAR#70)

* Added roughness length over land to the perturbed variables.
* Bugfix in gfsphysics/GFS_layer/GFS_typedefs.F90: remove Diag%cldcov, in particular the reset call because the variable is not allocated

Co-authored-by: Dom Heinzeller <climbfuji@ymail.com>

* Update gsl/develop from develop 2021/02/22 (NCAR#73)

* Fix for updating stochastic physics on separate time-step. (NCAR#199)

This bug fix allows the random patterns in the stochastic physics persist the for a period of time (defined as SKEBINT,SPPTINT, etc.) before calculating new patterns.
The fix is to move the allocation of the saved variables into the init section of stochastic_physics_wrapper, and remove the deallocates in the run section.

* Bug fixes in (1) running with frac_grid=T and GFDL MP and (2) restarting with frac_grid=T (NCAR#204)

* -- Pointing to Moorthi's modifications in ccpp/physics, which fixed the crash when running GFDL MP with frac_grid=T;
-- Not setting fice to zero in order to leave lake ice untouched;
-- Restart in the coupled model with the default physics is reproducible, if bad water temperature is only filtered at initial time;
Co-authored-with: Shrinivas Moorthi <shrinivas.moorthi@noaa.gov>
Co-authored-with: Denise Worthen <Denise.Worthen@noaa.gov>

* jedi-ufs with ccpp-physics submodule update (contains NCAR#201) (NCAR#211)

* updated CMakeLists.txt
* Changes for JEDI linking/control
* Update .gitmodules and submodule pointer for ccpp-physics for code review and testing
* Revert change to .gitmodules and update submodule pointer for ccpp-physics

Co-authored-by: Mark Potts <Mark.Potts@noaa.gov>

* Final-final GFS v16 updates / restart reproducibility bugfixes (NCAR#212)

* updates the submodule pointer for ccpp-physics for the final-final (!) GFS v16 physics updates
* fixes a bug in io/FV3GFS_io.F90 to obtain restart reproducibility for uncoupled and coupled runs - contributed by @SMoorthi-emc

Co-authored-by: Shrinivas.Moorthi <Shrinivas.Moorthi@noaa.gov>

* RRTMGP coupling to Thompson MP in ccpp-physics (NCAR#208)

* Updated physics. Added infrastructure to FV3 to handle new GP capabilities. Thompson MP, LW scattering, Use of LW-jacobian to update surface tendencies.
* Some small changes to work with physics improvements to RRTMGP.
* RRTMGP working with Thompson MP.
* Updated .gitmodules.
* Updated physics. New interstitials.
* Synced with NCAR/master
* Updated ccpp-physics
* Updated physics submodule.
* Cleanup
* Update physics
* Updated physics submodule pointer.
* Updated physics submodule hash.

* Minor bug fixes to CCPP UGWP (update submodule pointer for ccpp-physics) (NCAR#216)

Update the submodule pointer for ccpp-physics for minor bugfixes in CCPP's Unified Gravity Wave Drag parameterization.

* Remove IPD (step 1) (NCAR#215)

Remove all IPD source files that are not needed to compile with CCPP. Update gfsphysics/CMakeLists.txt and gfsphysics/GFS_layer/GFS_driver.F90 so that the code compiles after removing IPD sources.

Also: update submodule pointer for GFDL_atmos_cubed_sphere to include PR NOAA-EMC/GFDL_atmos_cubed_sphere#48 ("Removed use of mpp_node for use with FMS 2020.04").

* Update submodule pointers for ccpp-framework (ccpp_prebuild bugfix) and ccpp-physics (RRTMGP GFDL-MP bugfix) (NCAR#218)

Update the submodule pointers for ccpp-framework and ccpp-physics for the changes described in
NCAR/ccpp-framework#343 and NCAR#536.

* Remove unnecessary SIMD instruction sets from ccpp/CMakeLists.txt (NCAR#220)

* Remove additional/unnecessary SIMD instruction sets from ccpp/CMakeLists.txt

* Implementation of CCPP timestep_init and timestep_final phases (NCAR#217)

- replace calls to CCPP step `time_vary` with `timestep_init` in `atmos_model.F90`, add call to CCPP step `timestep_final` 
- update `ccpp/driver/CCPP_driver.F90` with calls to CCPP `timestep_init` and `timestep_final`
- add `h2o_def.f` and `ozne_def.` to `ccpp_prebuild_config.py`
- update of `gfsphysics/GFS_layer/GFS_typedefs.F90`: cleanup work for o3 and h2o physics (required by the updates to the CCPP time vary physics)
- update metadata in `gfsphysics/GFS_layer/GFS_typedefs.meta` for the above changes, and clean up the index used for the surface wind enhancement due to convection in the `phy_f2d` array (use proper index, not just the last entry in the array)

* add radiation_clouds_thompson_dependency in ccpp physics  (NCAR#225)

* using radiation_clouds_thompson_dependency ccpp physics branch
* point to ccpp master branch

* Remove IPD steps 3 and 5 (NCAR#224)

* Implementation of CCPP timestep_init and timestep_final phases in fv3atm; cleanup work in GFS_typedefs for o3 and h2o physics as a result of the changes to the time vary physics in CCPP
* Use proper index variable for surface wind enhancement due to convection in phy_f2d array in GFS_typedefs.{F90,meta}, move code to clear diagnostic buckets using GFS DDT bound procedures from atmos_model.F90 to CCPP_driver.F90
* First step of cleanup process: remove CCPP preprocessor directives, remove parts of unused IPD code, update cmake build system, Delete IPD source code, Replace IPD DDTs with GFS DDTs, Bugfix in atmos_model.F90; add missing call to GFS_externaldiag_populate, Move contents of gfsphysics/{CCPP_layer,GFS_layer} to ccpp/{data,driver}, entirely deleted IPD typedefs, Rename module GFS_driver to GFS_init
* Fix indentation in ccpp/data/CMakeLists.txt and ccpp/driver/CMakeLists.txt
* Add logic to set DYN32 depending on 32BIT setting
* Pass preprocessor directive GFS_TYPES to dycore to enable use of GFS data types
* Compile GFS_diagnostics.F90 without optimization, this leads to out of memory errors on wcoss_dell_p3

* Add CCPP rrtmgp fix (NCAR#237)

* ccpp physics merged with top of master
* point back to ccpp master branch

* Update develop from NOAA-GSL: RUC ice, MYNN sfclay, stochastic land perturbations (NCAR#239)

* Update .gitmodules and submodule pointers for ccpp-framework and ccpp-physics for gsl/develop branch
* RUC ice for gsl/develop (replaces NCAR#54 and NCAR#56) (NCAR#60) Implementation of RUC LSM ice model in CCPP
* Fix bug in gfsphysics/GFS_layer/GFS_typedefs.F90 from merge
* Remove lsm_ruc_sfc_sice from suite FV3_GSD_v0_unified_ugwp_suite and update submodule pointer for ccpp-physics
* Remove sfc_sice from ccpp/suites/suite_FV3_GSD_v0_unified_ugwp_suite.xml
* Update gsl/develop from develop 2020/12/08 (NCAR#61)
* Fix for updating stochastic physics on separate time-step. (NCAR#199)
This bug fix allows the random patterns in the stochastic physics persist the for a period of time (defined as SKEBINT,SPPTINT, etc.) before calculating new patterns.
The fix is to move the allocation of the saved variables into the init section of stochastic_physics_wrapper, and remove the deallocates in the run section.
* Bug fixes in (1) running with frac_grid=T and GFDL MP and (2) restarting with frac_grid=T (NCAR#204)
* -- Pointing to Moorthi's modifications in ccpp/physics, which fixed the crash when running GFDL MP with frac_grid=T;
-- Not setting fice to zero in order to leave lake ice untouched;
-- Restart in the coupled model with the default physics is reproducible, if bad water temperature is only filtered at initial time;
Co-authored-with: Shrinivas Moorthi <shrinivas.moorthi@noaa.gov>
Co-authored-with: Denise Worthen <Denise.Worthen@noaa.gov>
* Revert change to .gitmodules and update submodule pointer for ccpp-physics
* Update submodule pointer for ccpp-physics - MYNN surface layer updates and bugfixes (NCAR#63)
* Land stochastic perturbations (wrapper PR for NCAR#65) (NCAR#68)
* Move initialization of stochastic physics after the physics
initialization in CCPP.
* Add albedo variables to land perturbations with lndp_type=2 option. Change to accommodate soil perturbations with RUC LSM.
* Max/min soil moisture variables are introduced via GFS_Control_type
variables instead of through the use of namelist_soilveg*. This is a
more flexible way for different LSMs.
* Added pores and resid variables for max/min soil moisture to GFS_typedefs.f90.
* Remove tracer_sanitizer from all suites and from CCPP prebuild config
* Add namelist option to apply land surface perturbations at every time step, clean up stochastic_physics/stochastic_physics_wrapper.F90
* Stochastic land perturbations: add roughness length over land to the perturbed variables (NCAR#70)
* Added roughness length over land to the perturbed variables.
* Bugfix in gfsphysics/GFS_layer/GFS_typedefs.F90: remove Diag%cldcov, in particular the reset call because the variable is not allocated
* Update .gitmodules and submodule pointer for GFDL_atmos_cubed_sphere for code review and testing
* Revert change to .gitmodules for ccpp-physics, update submodule pointer for ccpp-physics
* Revert change to .gitmodules and update submodule pointer for GFDL_atmos_cubed_sphere
Co-authored-by: DomHeinzeller <58610420+DomHeinzeller@users.noreply.github.com>
Co-authored-by: Phil Pegion <38869668+pjpegion@users.noreply.github.com>
Co-authored-by: shansun6 <48043606+shansun6@users.noreply.github.com>
Co-authored-by: tanyasmirnova <tanya.smirnova@noaa.gov>

* Dycore change to add an option to zero-gradient BC for height advection and change dz_min as a namelist input (NCAR#232)

* Point dycore to a personal branch
* Point to new version of dycore
* Update the dycore version
* Update the dycore version
* Point to NOAA-EMC dev/emc dycore branch

* Remove gnumake build remnants, change v16beta to v16 (NCAR#234)

* Remove gnumake files
* Replace v16beta with v16 for all CCPP suites
* Remove unused CCPP_INCLUDE_DIRS/CCPP_LIB_DIRS from ccpp/CMakeLists.txt

* Move LSM vegetation lookup tables into CCPP, clean up RUC snow cover on ice initialization  (remove IPD step 2) (NCAR#244)

* Move LSM vegetation lookup tables into CCPP, clean up RUC snow cover on ice initialization
* Revert change to .gitmodules and update submodule pointer for ccpp-physics

* UGWP v0 v1 combined (NCAR#241)

* .gitmodules/gsl atmos-cubed cccp-fram cccp/physics
* update fv3atm from NOAA-EMC Jan 9
* new suite_FV3_GFS_v16b_ugwpv1.xml and modifications Jan 11/2021
* Added new logical flag do_ugwp_v0_nst_only which allows non-stationary drag from ugwp_v0 to be run with GSL drag suite
* Fix formatting in ccpp/data/GFS_typedefs.*
* Clean up allocation of arrays in ccpp/data/GFS_typedefs.F90, add active attribute (pass 1) to ccpp/data/GFS_typedefs.meta, strip trailing whitespaces from both
* Update and cleanup of metadata for UGWPv0, UGWPv1, drag suite
* Reorganize UGWP diagnostic variables in data/GFS_typedefs.{F90,meta}
* Bugfix for uninitialized data in ccpp/data/GFS_typedefs.F90
* Update submodule pointer for ccpp-physics
* Allocate 3d diagnostic arrays as dummy arrays if not used

Co-authored-by: valery.yudin <valery.yudin@noaa.gov>
Co-authored-by: Michael Toy <michael.toy@noaa.gov>

* SDF for GFSv16 with Thompson (NCAR#238)

* SDF for GFSv16 with Thompson
* Delete suite_FV3_GFS_v16beta_thompson.xml
* update to new commit of Thompson MP in ccpp physics

Co-authored-by: Phil Pegion <38869668+pjpegion@users.noreply.github.com>
Co-authored-by: shansun6 <48043606+shansun6@users.noreply.github.com>
Co-authored-by: Mark Potts <Mark.Potts@noaa.gov>
Co-authored-by: Shrinivas.Moorthi <Shrinivas.Moorthi@noaa.gov>
Co-authored-by: dustinswales <dustin.swales@noaa.gov>
Co-authored-by: Jun Wang <37633869+junwang-noaa@users.noreply.github.com>
Co-authored-by: XiaqiongZhou-NOAA <48254930+XiaqiongZhou-NOAA@users.noreply.github.com>
Co-authored-by: valery.yudin <valery.yudin@noaa.gov>
Co-authored-by: Michael Toy <michael.toy@noaa.gov>
Co-authored-by: XiaSun-NOAA <58949533+XiaSun-NOAA@users.noreply.github.com>

* Remove inconsistencies in computation of air density with Thompson MP (NCAR#74)

* Update .gitmodules and submodule pointer for ccpp-physics for code review and testing

* Revert change to .gitmodules and update submodule pointer for ccpp-physics

* Update thompson mp 20210213 (NCAR#567) for gsl/develop (NCAR#75)

* Add logical convert_dry_rho for Thompson MP, hardcoded to false
* Initialize all variables to NaN in ccpp-physics in DEBUG mode
* Update submodule pointer for ccpp-physics

* Revert change to .gitmodules and update submodule pointer for ccpp-framework and ccpp-physics

* &gfs_physics_nml print_diff_pgr=.true. will print per-timestep pgr change stats

* point to sam's repository for atmos_cubed_sphere

* Add units and lat/lon to per-timestep pgr stats

* Rebase atmos_cubed_sphere to NOAA-GFDL dev/emc branch

* Print mean pgr change as hPa/hr and other pgr data as bars.

* Remove changes from atmos_cubed_sphere and simplify atmos_model.F90 changes.

* print mean abs change instead of mean change in pgr

* Update .gitmodules and submodule pointers for ccpp-framework and ccpp-physics for code review and testing

* Revert change to .gitmodules and update submodule pointers for ccpp-framework and ccpp-physics

* clarify one print

* More 3D diagnostic tendencies (NCAR#76)

Add diagnostic tendencies for all tracers. Move all d*3dt variables into a 4D sparse array stored as `dtend(i,k,dtidx(tracer,process))` to reduce memory usage.

* Fix incorrect units in dtend metadata (NCAR#82)

* Fix incorrect units in dtend metadata

* Make the tracer tendency units mandatory.

* Add SO2 tendency units (NCAR#86)

* Update .gitmodules and submodule pointers for ccpp-framework and ccpp-physics

* Update submodule pointer for ccpp-physics

* Revert change to .gitmodules and update submodule pointer for ccpp-framework and ccpp-physics

* dtend: add missing tendencies and fix bugs in convection tendencies (NCAR#92)

* Fix incorrect units in dtend metadata

* Point to corresponding ccpp/physics branch

* fixes to dtend support:

1. Store rtg (AKA clw AKA qtr) instead of gq0 in DCNV and SCNV
pre/post for schemes that use convective transport. Tracers handled
solely by convective transport (ones not in rtg) are reported as
convective transport tendencies. Tendencies for variables in rtg are
reported as dcnv and scnv tendencies.

2. Report TKE tendencies from gfs v16 PBL.

3. Add diagnostic tendencies to drag_suite

4. Only report rayleigh damping tendencies if rayleigh damping is enabled

5. List all possible diagnostic tendencies, even if they are not
enabled. In the output, label them "selected" or "disabled."

6. Add phys_tend to the fv3_rap suite.

* Merge gsl/develop into ccpp/physics

* Add phys_tend to suite_FV3_GSD_SAR and remove some debug prints

* Remove some debug prints and commented-out code.

* Correct error in dtend variable availability list print.

* Enable convtrans diagnostic tendencies for number concentrations and qrimef.

* Disable cnvtrans diagnostic tendencies for schemes that do their own diagnostic tendency reporting.

* Point to gsl repositories

* Update .gitmodules for code review and regression testing

* Formatting changes in ccpp/data/GFS_typedefs.F90

* Update submodule pointer for ccpp-physics

* Update submodule pointer for ccpp-physics

* Point update_gsl_develop_from_develop_20210531 to NOAA-GSL branches of ccpp/physics and ccpp/framework

* GF aerosols updates and tunings

* GF aerosol updates and tunings from physics

* Update .gitmodules and submodule pointer for ccpp-physics for code review and testing

* Update submodule pointer for ccpp-physics

* Update submodule pointer for ccpp-physics

* Update submodule pointer for ccpp-physics

* Make aod_gf and cactiv_m work appriopriately for restarts
Minor code cleanup

* Add missing metadata for new GF arrays

* Bug fix in ccpp/driver/GFS_restart.F90 for GF

* Update submodule pointer for ccpp-physics

* Revert change to .gitmodules and update submodule pointer for ccpp-physics

* Add missing active attribute for aod_gf in ccpp/data/GFS_typedefs.meta

* Update submodule pointer for ccpp-physics

* Update submodule pointer for ccpp-physocs

* Change name of sfc_name2(39) from 'weasd' to 'weasdl' in io/FV3GFS_io.F90

* Revert change to .gitmodules and update submodule pointers for ccpp-framework and ccpp-physics

* Update .gitmodules and submodule pointer for ccpp-physics for code review and testing

* Update .gitmodules and submodule pointer for ccpp-physics for code review and testing

* Revert change to .gitmodules and update submodule pointer for ccpp-physics

* Changed dimensions of variables tsnow_land and sncovr_ice from
horizontal_dimension to horizontal_loop_extent

* Added Flake to two suites: FV3_GSD_v0 and FV3_HRRR.

* Update .gitmodules and submodule pointer for ccpp-physics for code review and testing

* Update submodule pointer for ccpp-physics

* Revert change to .gitmodules and update submodule pointer for ccpp-physics

* Update to ccpp/data/GFS_typedefs.meta following CCPP standard names update

* Update submodule pointer for ccpp-physics

* Revert change to .gitmodules and update submodule pointer for ccpp-physics

* Revert change to .gitmodules and update submodule pointers for ccpp-physics and ccpp-framework

* Revert change to .gitmodules and update submodule pointers for ccpp-framework and ccpp-physics

* Turn on GF aerosol-awareness
Tune clwdet (cloud water detrainment)
Make evfact (evaporation factor) and radiation factor scale-aware

* Update .gitmodules and submodule pointers for ccpp-framework and ccpp-physics for code review and testing

* Switch back to NCAR ccpp-framework main, abandon NOAA-GSL fork

* Update submodule pointer for ccpp-physics

* Update submodule pointer for ccpp/physics

* Update .gitmodules and submodule pointer for ccpp-physics for code review and testing

* Update submodule pointer for ccpp-physics

* Revert change to .gitmodules and update submodule pointer for ccpp-physics

* Update submodule pointer for ccpp-physics

* Revert change to .gitmodules and update submodule pointer for ccpp-physics

* Update .gitmodules and submodule pointer for ccpp-physics for code review aand testing

* Update submodule pointer for ccpp-physics

* Revert change to .gitmodules and update submodule pointer for ccpp-physics

* Update .gitmodules and submodule pointer for ccpp-physics for code review and testing

* Update submodule pointer for ccpp-physics

* Revert .gitmodules and update submodule pointer for ccpp-physics

* Revert change to .gitmodules and update submodule pointer for ccpp-physics

* Update .gitmodules and submodule pointer for ccpp-physics for code review and testing

* Revert .gitmodules and update submodule pointer for ccpp-physics

* Update CCPP metadata and several suite defiition files for new GSL regression tests

* Bug fix for compiling with Intel on macOS, remove clutter from stdout in io/FV3GFS_io.F90

* Update .gitmodules and submodule pointer for ccpp-physics for code review and testing

* Rename GSL suites to RAP suites, add new RAP suites

* rename suite FV3_GSD_v0 to FV3_RAP_noah_sfcdiff_cires_ugwp, delete suite FV3_SAR

* Update submodule pointer for ccpp-physics

* Address reviewer comments

* Update submodule pointer for ccpp-physics

* Revert .gitmodules and update submodule pointer for ccpp-physics

Co-authored-by: DomHeinzeller <58610420+DomHeinzeller@users.noreply.github.com>
Co-authored-by: Phil Pegion <38869668+pjpegion@users.noreply.github.com>
Co-authored-by: shansun6 <48043606+shansun6@users.noreply.github.com>
Co-authored-by: tanyasmirnova <tanya.smirnova@noaa.gov>
Co-authored-by: tanyasmirnova <38667904+tanyasmirnova@users.noreply.github.com>
Co-authored-by: Mark Potts <Mark.Potts@noaa.gov>
Co-authored-by: Shrinivas.Moorthi <Shrinivas.Moorthi@noaa.gov>
Co-authored-by: dustinswales <dustin.swales@noaa.gov>
Co-authored-by: Jun Wang <37633869+junwang-noaa@users.noreply.github.com>
Co-authored-by: XiaqiongZhou-NOAA <48254930+XiaqiongZhou-NOAA@users.noreply.github.com>
Co-authored-by: valery.yudin <valery.yudin@noaa.gov>
Co-authored-by: Michael Toy <michael.toy@noaa.gov>
Co-authored-by: XiaSun-NOAA <58949533+XiaSun-NOAA@users.noreply.github.com>
Co-authored-by: samuel.trahan <Samuel.Trahan@noaa.gov>
Co-authored-by: Samuel Trahan (NOAA contractor) <39415369+SamuelTrahanNOAA@users.noreply.github.com>
Co-authored-by: hannah barnes <hannah.barnes@noaa.gov>
Co-authored-by: Hannah C Barnes <38660891+hannahcbarnes@users.noreply.github.com>
HelinWei-NOAA pushed a commit to HelinWei-NOAA/ccpp-physics that referenced this pull request Feb 26, 2023
* 1)update upp revision to 8ed92cb; 2)read instant model top longwave;
3)output lat/lon of four corner point for rotated lat-lon grid.
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.

None yet

6 participants